Hallo User,
bin gerade dabei, Visual C++ zu erlernen. Habe dazu ein Buch von Galileo Computing, in der ich eine Aufgabe bekommen habe.
Ich bin gerade beim Thema Arrays und Vectoren.
Ich sollte als Aufgabe eine Konsolenanwendung schreiben, in der der Benutzer mehrere Zahlen eingeben kann. Wieviel, steht vorher noch nicht fest. Also Arrays wären da nicht sinnvoll. Wenn der Benutzer eine negative eingabe macht, soll die Schleife beendet werden, und alle Zahlen in umgekehrter Reihenfolge ausgeben. Ich dachte mir, das sei kein Problem, aber ich scheiter an einem Punkt.
(Ich benutze Visual Studio 2010)
Hier das Programm
Alles anzeigen
Das Problem liegt bei folgendem
Ich kann ganz normal Debuggen, doch wenn der dann an diese Stelle kommt, dann gibt das Problem folgende Fehlermeldung in einem neuen Fenster:
Wenn ich in der Schleife vorher einen Wert für i definiere, also
i=3;
dann zeigt das Programm eben den 3. Wert vom Vector.
aber i hat doch schon einen Wert, ich habe den auch probeweise mal ausgeben lassen. Ich habe ganz viel ausprobiert, auch mit einer if else anweisung innerhalb der Schleife, oder die Ausgabe in void verpackt.
Oder ist die Software von Microsoft beschädigt?
Denn logisch ist das Programm allemal.
Oder gibt es da noch einen Hinweis, der in meinem Buch nicht beschrieben ist?
bin gerade dabei, Visual C++ zu erlernen. Habe dazu ein Buch von Galileo Computing, in der ich eine Aufgabe bekommen habe.
Ich bin gerade beim Thema Arrays und Vectoren.
Ich sollte als Aufgabe eine Konsolenanwendung schreiben, in der der Benutzer mehrere Zahlen eingeben kann. Wieviel, steht vorher noch nicht fest. Also Arrays wären da nicht sinnvoll. Wenn der Benutzer eine negative eingabe macht, soll die Schleife beendet werden, und alle Zahlen in umgekehrter Reihenfolge ausgeben. Ich dachte mir, das sei kein Problem, aber ich scheiter an einem Punkt.
(Ich benutze Visual Studio 2010)
Hier das Programm
Quellcode
- #include<iostream>
- #include<vector>
- using namespace std;
- int main() {
- cout << "Geben sie positive Zahlen ein. Bei eingabe einer negativen Zahl gibt das Programm ihre eingegebenen Zahlen wieder aus." <<endl;
- vector<int> v;
- int i=0;
- int x=1;
- while(0==0) {
- cout << "Geben sie eine Zahl ein" <<endl;
- cin >> x;
- if(x>=0) {
- v.push_back(x);
- i++;
- }
- else {
- break;
- }
- }
- while(i>=0) {
- cout << v[i] <<endl;
- i--;
- }
- }
Das Problem liegt bei folgendem
Ich kann ganz normal Debuggen, doch wenn der dann an diese Stelle kommt, dann gibt das Problem folgende Fehlermeldung in einem neuen Fenster:
Debug Assertion Failed!
Program; ...s\visual studio 2010\Projects\ganzzahlen\Debug\ganzzahlen.exe
File: c:\program files\microsoft visual studio 10.0\vc\include\vector
Line: 932
Expression: vector subscript out of range
For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
Wenn ich in der Schleife vorher einen Wert für i definiere, also
i=3;
dann zeigt das Programm eben den 3. Wert vom Vector.
aber i hat doch schon einen Wert, ich habe den auch probeweise mal ausgeben lassen. Ich habe ganz viel ausprobiert, auch mit einer if else anweisung innerhalb der Schleife, oder die Ausgabe in void verpackt.
Oder ist die Software von Microsoft beschädigt?
Denn logisch ist das Programm allemal.
Oder gibt es da noch einen Hinweis, der in meinem Buch nicht beschrieben ist?