Array auslesen



  • Hallo leute,
    Ich habe erst neulich mit C++ und programmieren im allgemeinen angefangen und bin noch komplett unerfahren. Ich habe mir ein lehrbuch gekauft um es zu lernen und nun gibt es eine Übungsaufgabe die ungefähr so lautet "Schreibe ein Programm das die ersten 32 Potenzen von 2 berechnet in einem array abspeichert und dann ausgibt). Die Übungsaufgabe war nicht sonderlich schwer, ich hab sie so gelöst:

    int potenz[10];
    	int ausgabe;
    
    	for (int i = 1; i <= 10; ++i)
    	{
    		potenz[i] = pow(2.0, i);
    		cout << "2 hoch " << i << " = " << potenz[i] << endl;
    	}
    

    (hab zur Übersicht nur bis zur 10er potenz benutzt)

    Nun wollte ich das Programm soweit erweitern, dass der Benutzer nun von den 10 berechneten Potenzen z.B die dritte potenz auswählt und das programm spuckt es dann aus ohne es nochmal neu zu berechnen. Mein kompletter code sieht nun wie folgt aus:

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    int main()
    {
    	int potenz[10];
    	int ausgabe;
    
    	for (int i = 1; i <= 10; ++i)
    	{
    		potenz[i] = pow(2.0, i);
    		cout << "2 hoch " << i << " = " << potenz[i] << endl;
    	}
    
    	cout << endl;
    	cout << "Geben sie eine zahl zwischen 1 & 10 ein die sie ausgeben möchten: " << endl;
    	cin >> ausgabe;
    
    	if(ausgabe > 10 || ausgabe <= 0)
    	{
    		cout << "Ungueltige Zahl" << endl;
    		return 0;
    	}
    
    	cout << potenz[ausgabe];
    }
    

    Nachdem ich jedoch eine zahl eingebe hängt sich das programm auf mit dem fehler:
    Stack around the variable 'potenz' was corrupted. Könnte mir villeicht jemand sagen welchen Fehler ich gemacht habe? 🙂



  • Der Index in ein Array fängt bei 0 an, nicht bei 1.



  • roflo schrieb:

    Der Index in ein Array fängt bei 0 an, nicht bei 1.

    Hey vielen dank für die Antwort! Nun kriege ich die zahl ausgegeben, der absturzbericht kommt aber immernoch am ende 😕

    "Run-Time Check Failure #2 - Stack around the variable 'potenz' was corrupted."



  • Zähl mal nach, wieviel mal die Schleife durchlaufen wird.



  • Und er geht auch nur bis Größe - 1


  • Mod

    Hast du immer noch i <= 10 als Laufbedingung? Zähl mal von 0 bis einschließlich 10. wie viele Zahlen sind das? Wie viele Elemente passe in dein Array?



  • SeppJ schrieb:

    Hast du immer noch i <= 10 als Laufbedingung? Zähl mal von 0 bis einschließlich 10. wie viele Zahlen sind das? Wie viele Elemente passe in dein Array?

    Ok wenn ich i < 10 mache funktioniert alles einwandfrei, vielen dank! Kann mir villeich jemand erklären warum der fehler aufgetreten ist, damit ich ihn nicht nochmal mache? 🙂



  • Deine Schleife wird 11 mal ausgeführt. Spiel mal Computer und geh die Schleife Schritt für Schritt durch.


Log in to reply