Veröffentlicht 6. August 201015 j Moin Leute, ich sitze hier seit einer Stunde vor einem Programmabschnitt und der produziert mir den verwirrendsten Fehler, den ich in einem c++-Programm bis jetzt gesehen habe. Der betrachtete Code ist folgender: // int l=0; float max[10]={0}; int kmax[10]={0}; for(k;k<9970;k++) { if (mittelwert[k][0]>=max[0]) { max[0]=mittelwert[k][0]; kmax[0]=k; } } for(int i=kmax[0]-grenze;i>=0;i--) { // l++; if (mittelwert[i][0]>=max[1]) { max[1]=mittelwert[i][0]; kmax[1]=i; } } for(int i=kmax[0]+grenze;i<=9970;i++) { // if (mittelwert[i][0]>=max[2]) // { // max[2]=mittelwert[i][0]; // kmax[2]=i; // } } // std::cout << l; Folgender unbegreiflicher Fehler tritt auf: Wenn ich l auskommentiert lasse (ich brauche l an keiner anderen Stelle im Programm und wie ihr seht in dem Schnipsel hier auch nicht) , dann wird zwar ohne zu meckern von meinem boarland-compiler kompiliert, aber sobald ich die exe starte gibt mir windows aus, dass die exe ein Problem festgestellt hat und beendet werden muss. Jetzt kommt aber das lustigeste an der ganzen Sache. Wenn ich l wieder einkommentiere, dann werden meine Maxima gefunden und ausgegeben. Und zwar die richtigen Werte. Was zur Hölle könnte das denn sein? Ich verstehe das überhaupt nicht. Habe schon alles mögliche ausprobiert und teilweise kompiliert, aber ich komme nicht auf den Fehler. Es muss doch auch ohne gehen. Für Hilfe bin ich wie immer sehr dankbar. Grüße Manu PS: Der Wert grenze ist ein int-Wert von 200. Bearbeitet 6. August 201015 j von mathemanu
6. August 201015 j Oh, ja ich hab k noch nicht wieder in die Schleife geschreiben, aber da steht eigentlich: for(int k=0;k<9970;k++) Ich falle vom Glauben ab. Ich habe int k=0; einfach über der Schleife geschrieben und dann hat er immer diesen Fehler ausgespuckt. Aber jetzt ist er weg. Ich dachte, wenn man die Laufvariable außerhalb der Schliefe initialisiert, dann geht das auch... Vielen Dank für die Antwort. Es klappt jetzt auf jeden Fall. Gruß Manu
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.