[C++] 2er Reihe realisieren mit Array & "for"-Schleife

byte_head

Captain
Registriert
Jan. 2005
Beiträge
3.674
Hi,

ich hatte bis gerade eben folgendes Beispiel zu verstehen, ich glaube ich habs jetzt verstanden, wäre schön, wenn ihr nochmal nen Blick draufwerfen könntet!

Code:
#include<iostream>
    using namespace std;

    int main()
    {
      int reihe[10];
      int i;
      reihe[0]=2;

      for(i=1;i<10;i=i+1)
      {
        reihe[i]=reihe[i-1]*2;
      }

      for(i=10;i>0;i=i-1)
      {
        cout<<reihe[i-1]<<"\n";
      }
      cin.get();
    }

Die erste Zahl im Array bekommt den Wert 2.
Sehe ich das dann richtig, das i mit dem Wert 1 statt 0 beginnt, da die 1. Zahl des Arrays schon oben definiert wurde?

die 1. "for"-Schleife sagt dann im Array gehe 1 Schritt zurück (i ist zu diesem Zeitpunkt ja schon 2 und nichtmehr 1) und multipliziere mal 2 und behalte dieses Ergebnis.
So kommt das hin, da jeder Wert wieder multipliziert wird:

2*2==4
4*2==8
8*2==16
etc.

und die 2. "for"-Schleife geht dann im Array von "oben nach unten" bzw von "links nach rechts" indem es wieder den größten Wert ausgibt, von i=10 wird eins nach unten gegangen (auf 9, da es ja 0-9 ist und wir ja sonst das Array überschreiten) und gibt es nach unten hin aus. :)

Habe ich recht oder ist das nur eins meiner Hirngespinster?
Danke schonmal. :)

Grüßle, byte
 
Moin.
Also, bei Array werden die Stellen generell ab 0 angesprochen.
Sowas wie int Rheie[10] bedeutet, dass du ein Array der Länge 10 initialisierst und mit dem Namen Rheie.
Die erste Stelle wird mit Rheie[0] angesprochen, so dann die letzte mit Rheie[9] ;)
Die erste for-Schleife sagt folgendes:

for(i=1;i<10;i=i+1) wobei i=1 gesetzt wird, dann Bedingung erfolgt wie laufe solange i<10 ist und dann was geschehen soll, also dass i für jeden Durchlauf einmal hoch gezählt werden soll.
So weiter...In der ersten for-Schleife wird dann in das Array an der Stelle i ein neuer Wert reingeschrieben und zwar der Rheie*2.
Hier wäre das so:
Erster Durchlauf, i=1: An die 2te Stelle im Array, also Rheie[1] wird folgendes geschrieben: 2*2, also vier. Unser Array ist das so: 2, 4, ...
Zweiter Durchlauf, i=2: An die 3te Stelle im Array, also Rheie[2] wird geschrieben: 4*2, also 8.
Das Array ist dann: 2, 4, 8 .....
Und die zweite Schleife, wie du schon richtig sagtest, gibt die Werte aus dem Array aus und das ganze Dabei vom Ende des Arrays zum Anfang.

Edit: Also im ganzen hast du es richtig verstanden :), ins Array werden einfach die Zahlen 2^1, 2^2, 2^3, 2^4 geschrieben und wieder ausgegeben.
 
Zuletzt bearbeitet:
Das Ganze realisiert einen Array mit 10 Elementen mit dem Inhalt 2^1 bis 2^10 (erste for-Schleife), die dann rückwärts ausgegeben wird. Also 2^10 bis 2^1.

Aus Gewohnheit würde ich aber statt i=i+1 i++ und statt i=i-1 i-- schreiben.

Du musst dir nur merken, dass C/C++ immer mit 0 zu zählen anfängt und nicht mit 1 ;)
 
Götterwind schrieb:
Das Ganze realisiert einen Array mit 10 Elementen mit dem Inhalt 2^1 bis 2^10 (erste for-Schleife), die dann rückwärts ausgegeben wird. Also 2^10 bis 2^1.

Aus Gewohnheit würde ich aber statt i=i+1 i++ und statt i=i-1 i-- schreiben.

Du musst dir nur merken, dass C/C++ immer mit 0 zu zählen anfängt und nicht mit 1 ;)

Kannst auch i+=1 schreiben oder i-=1, ist halt noch unübersichtlicher. Wenn man gerade erst damit anfängt, sollte mal lieber ausführlicher schreiben, aber wenn man es einmal drin hat, dann sind die Abkürzungen recht empfehlenswert, da schliess ich mich Götterwind an :evillol:
 
Hey, super danke. :)

Also sind wir uns einig das:

reihe=reihe[i-1]*2;

heisst, er soll eine Stelle zurück im Array gehen und diese mal 2 nehmen?
Für einen Anfänger etwas verwirrend. :evillol:

Aber vielen dank schonmal, fühle mich schon etwas sicherer!
 
byte_head schrieb:
Hey, super danke. :)

Also sind wir uns einig das:

reihe=reihe[i-1]*2;

heisst, er soll eine Stelle zurück im Array gehen und diese mal 2 nehmen?
Für einen Anfänger etwas verwirrend. :evillol:

Aber vielen dank schonmal, fühle mich schon etwas sicherer!


Jo, genau das heißt es. = bedeutet Zuweisung. Du weist der Stelle reihe einen Wert zu und zwar den an der Stelle davor * 2 :)
 
Zurück
Oben