Schleifen-Problem



  • Hallo,

    könntet ihr mir mal bitte sagen warum diese Schleife nich funktioniert?
    (Sie sollte eigentlich die 8er Reihe anzeigen aber es kommen immer nur so irrsinnig große Zahlen...)

    #include<iostream>
      #include<stdlib.h>
    
      int main()
     {
      int ar[10];
      int i;
    
      ar[0]=8;
      for (i=1;i<10;++i)
          {
           ar[i]=ar[i]*8;
          }
    
      for (i=1;i<10;++i)
          {
           cout<<ar[i];
          }
      system("PAUSE");
     }
    

    Wär nett wenn ihr mir weiterhelfen könntet!



  • vielleicht willst du
    ar[i] = ar[i-1]*8
    ?



  • neee, so funktionierts auch net... Muss an was andrem liegen...



  • Liegt daran das du den Feldern ar[1]-ar[9] keinen Wert zuweist. Darum steht in diesen Feldern nur irgendein Müll.



  • lesen sollte man können. du willst die achter reihe, also 8, 16, 24, 32, etc.
    dann

    for (int i = 0; i < 10; ++i) arr[i] = 8*(i+1);
    

    geh deinen schleifendurchlauf doch vorher mal im kopf durch!
    dann siehst du (bei deiner schleife):

    for (int i = 1; i < 10; ++i) {
        arr[i] = arr[i]*8
    }
    

    1.durchlauf (i = 1):
    arr[1] = arr[1]*8
    was steht in arr[1]? irgendwas. irgendwas mal 8 = irgendwas-anderes. in arr[1] steht also nach dem ersten schleifendurchlauf irgendwas (-anderes als vorher).
    aber keine konkrete zahl.

    bei der schleife, die ich oben angegeben hab steht im ersten durchlauf (i = 0):
    arr[0] = 8*(0+1)
    und 8*(0+1) ist gleich 8
    arr[0] = 8

    also; tipp:
    versuch dir eben, dir wirklich vorzustellen, was die schleife machen wird und ersetze (zumindest anfangs) das i gedanklich immer mit einer zahl, und überlege, ob es stimmen kann.


Anmelden zum Antworten