c++ for schleife bei jedem durchlauf um 2 erhöhen. wie geht das ?
Hallo zusammen,
beschäftige mich zurzeit mit der for schleife in c++
möchte das bei jedem schleifendurchlauf der wert der variable um 2 erhöht wird.
was ist an meinem code falsch ?
includeusing namespace std;
int main() { int zahl1;
for(int zahl1=1;zahl1<=20;zahl1+2)
{
cout<<"Der Wert von zahl1 lautet: "<<zahl1<<endl;
}
system("PAUSE");
return 0;
}
4 Antworten
Du erhöhst nicht zahl1, sondern führst die Anweisung "multipliziere den Wert in zahl1 mit 2" aus. Das ist ein Unterschied.
Was du willst, ist sowas:
for (int zahl1 = 1; zahl1 <= 20; zahl1 = zahl1 + 2) { }
Oder alternativ die Kurzform-Schreibweise:
for (int zahl1 = 1; zahl <= 20; zahl1 += 2) { }
Lies in deiner Lernquelle nochmal zum Thema "Variablen, Deklaration, Initialisierung, Veränderung" nach, dir scheint das Variablenkonzept noch nicht 100% klar zu sein.
Oh, und bitte, gewöhne dir dieses unselige
system("PAUSE");
gar nicht erst an.
Ein
cin.get();
bewirkt das gleiche, ist aber wenigstens standardkonform und sauber.
Du musst schon das Ergebnis von zahl1+2 wieder in zahl1 schreiben:
for (int zahl1 = 1; zahl1 <= 20; zahl1 = zahl1 + 2)
Oder kürzer ("syntaktischer Zucker"):
for (int zahl1 = 1; zahl1 <= 20; zahl1 += 2)
Muss man die zahl1 nicht vor der schleife definieren? also so: int zahl1;
for(zahl1=1; zahl1 <= 20; (zahl1 + 2)) { ...
Klar geht das. Die Schleife interessiert sich für die obere Deklaration überhaupt nicht.
die zahl1 ist vor der schleife definiert.
ist beim kopieren nur an einer unglücklichen stelle geraten.
dadrüber steht ja noch :
int main() { int zahl1;
Und funktioniert es jetzt wenn du die zahl1 nicht in der Schleifendefinition machst, sondern nur vor der Schleife?
Normalerweise gibt es da immer so hilfreiche Fehlermeldungen?
Fehlermeldungen, wenn der Code syntaktisch fehlerfrei ist? Was der Programmierer wollte, kann der Compiler noch nicht erraten.
Ah jetzt sehe ich es. Du definierst zahl1 zwei mal. Einmal vor der Schleife und einmal in der Schleifendefinition.
Solltest du aber nur einmal machen und zwar vor der Schleife.
Macht aber nix aus. Die Deklaration im Schleifenkopf überschattet zwar die über der Schleife, hat aber für die Funktionsweise der Schleife keine Bedeutung.
Ich programmiere in C#, da löst sowas einen Fehler aus bzw. ist nicht einmal möglich.
Interessant. Was das mit einer C++-Frage zu tun hat, verstehe ich allerdings nicht.
Weil ich mich mit C++ nicht auskenne und somit helfen wollte mit dem Wissen von C#
for (int i = 0; i <= 20; i+= 2) {
// magic happens here
}
Nein, die Deklaration im Schleifenkopf ist ist schon richtig. Kann man aber auf beide weisen machen. Also erst definieren und in der Schleife Wert zuweisen oder in dem Schleifenkopf definieren und Wert zuweisen.
Nur beides machen geht nicht.