name lookup of `j' changed for new ISO `for' scoping
-
wie muss ich es denn stattdessen machen?
-
aron05 schrieb:
wie muss ich es denn stattdessen machen?
for(int j=15-i;j==15;j++); // <---- das ; muss weg
-
aron05 schrieb:
for(int i=0;i==15;i++) { system("cls"); cin>>buchstabe[i]; if(buchstabe[i]=5) { for(int j=15-i;j==15;j++); { delete buchstabe[j]; } } }
Der Code lässt sich deutlich verkürzen:
;
Schau bitte nochmal in deinem Lieblings-C++-Einsteigerbuch nach, wie for-Schleifen funktionieren.
-
Einfach das ";" hinter der schließenden Klammer der zweiten for-Schleife weglassen. Das hast Du doch bei der ersten Schleife auch nicht gemacht.
Die for-Schleife ist afaik nur bis zu dem ";" gültig, d.h. läuft erst alle Werte für "j" durch und führt erst dann den nachfolgenden Block aus, aber Du möchtest ja, dass er Block für alle "j" ausgeführt wird.
// Edit: Immer diese Überschneidungen.
-
Schaut doch bitte erstmal auf die Bedingung der äußeren for-Schleife, bevor ihr weiter über das Semikolon redet.
-
HumeSikkins schrieb:
Schaut doch bitte erstmal auf die Bedingung der äußeren for-Schleife, bevor ihr weiter über das Semikolon redet.
Aber das war nicht die Frage
-
Genau.
Erst wird die Syntax korrigiert, dann die logischen Fehler
-
1. War das nicht die Frage
2. habe ich mir den Code gar nicht weiter angeguckt, das ";" springt einem so ins Auge, da wird es schwierig weiter zu gucken.Aber Du hast natürlich völlig Recht.
-
Wieso eigentlich
delete buchstabe[j];
? Ist buchstabe ein char-Zeiger-Feld, und steht irgendwo etwas in der Art
buchstabe[x] = new char;
?
-
danke für eure antworten
das mit dem ";" war nur flüchtigkeitsfehler, mache ich sonst nicht.. und aus der fehlermeldung ging das für mich nicht ganz hervornaja vllt habe ich mich mit galgenraten doch noch etwas übernommen für den 3. tag c++ :(( muss mich wohl erstmal durch zeiger durcharbeiten
ganz kurze frage noch. gibt es eine "cin" alternative bei der kein zeilensprung folgt?
mfg aron05