c++ for schleife bei jedem durchlauf um 2 erhöhen. wie geht das ?

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.


dergutekoenig  06.11.2013, 11:13

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)) { ...


TUrabbIT  06.11.2013, 11:10

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.

dergutekoenig  06.11.2013, 11:14
@TUrabbIT

Klar geht das. Die Schleife interessiert sich für die obere Deklaration überhaupt nicht.

InformatikerAC 
Beitragsersteller
 06.11.2013, 10:28

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;

dsmog  06.11.2013, 10:33
@InformatikerAC

Und funktioniert es jetzt wenn du die zahl1 nicht in der Schleifendefinition machst, sondern nur vor der Schleife?

dergutekoenig  06.11.2013, 11:06
@HerrWagner

Fehlermeldungen, wenn der Code syntaktisch fehlerfrei ist? Was der Programmierer wollte, kann der Compiler noch nicht erraten.

dsmog  06.11.2013, 10:27

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.

dergutekoenig  06.11.2013, 10:55
@dsmog

Macht aber nix aus. Die Deklaration im Schleifenkopf überschattet zwar die über der Schleife, hat aber für die Funktionsweise der Schleife keine Bedeutung.

dsmog  06.11.2013, 10:56
@dergutekoenig

Ich programmiere in C#, da löst sowas einen Fehler aus bzw. ist nicht einmal möglich.

dergutekoenig  06.11.2013, 11:08
@dsmog

Interessant. Was das mit einer C++-Frage zu tun hat, verstehe ich allerdings nicht.

dsmog  06.11.2013, 11:16
@dergutekoenig

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
}
Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012