problem mit For schleife....welcher wert wird übergeben?!



  • Nö, das würd bedeuten, dass es nur eine semantische Schleife geben würde.



  • Ich hätt nicht gewusst das über so eine Noob thema (für euch bestimmt ich mein...ich mach grad 11. Klasse...ihr habt bestimmt andere Codes bzw andere sachen wo ihr hängen bleibt als so ne for schleife^^ oder 😃

    auf jedenfall danke....

    hier noch n comment von meinem Kollegen:

    Vll wird es dir klarer wenn du denn Code so schreibst (in diesem Fall verhält sich der Code genauso)

    int Berechne (int wert) 
    
    {
      for (int a=1 ; a<5 ; a++) {
        for (int b=0 ; b<4 ; b++) {
          wert++;
        }
      }
      return (wert);
    }
    

    alles was bei den schleifen in {} steht, wird bei jedem durchgang ausgeführt. D.h. dass die erste Schleife bei jedem Durchgang die 2 Schleife aufruft, welche 4 mal Wert um 1 erhöht.

    Ach damn ich dachte ich habs aber dann hab ich mich doch vertan:

    da das ergebnis ja 21 zu schein sein hab ich so gedacht:

    5+1=6 } Erster Durchlauf
    6+1=7
    7+1=8
    8+1=9

    9+1=10 } zweiter Durchlauf
    10+1=11
    11+1=12
    12+1=13

    13+1=14 } dritter Durchlauf
    14+1=15
    15+1=16
    16+1=17

    17+1=18 } Vierter Durchlauf
    18+1=19
    19+1=20
    20+1=21
    ach lol... xD
    Okay da ist mein erstes Aha erlebnis....schön das ich das nun shconmal verstanden hab



  • Ich verstehe dass nicht, weil da steht doch n "return", wird die ganze Sache dann nicht einfach beendet?

    MfG
    Stromberg



  • Hm...stimtm müsste dan icht cout<<wert<<endl; stehen z.B



  • Stromberg schrieb:

    Ich verstehe dass nicht, weil da steht doch n "return", wird die ganze Sache dann nicht einfach beendet?

    Steht doch außerhalb der Schleifen :p

    Michael E. schrieb:

    Nö, das würd bedeuten, dass es nur eine semantische Schleife geben würde.

    Hum? Kannst du mir das mal erklären?



  • ProtoX schrieb:

    da das ergebnis ja 21 zu schein sein hab ich so gedacht:

    5+1=6 } Erster Durchlauf
    6+1=7
    7+1=8
    8+9=10

    8 + 9 = 10?

    10+1=11 } zweiter Durchlauf
    11+1=12
    12+1=13
    13+1=14

    15+1=16 } Dritter durchlauf

    Auszeit. Wo ist 14 + 1 = 15 geblieben?

    aber naja....wohl doch nicht -.-

    Doch.



  • ach damn!!!

    Scheiss müdigkeit sry!!!

    Mom^^ ich korrigiere es mal und schaus mir nochmal an!! XD
    thx



  • Badestrand schrieb:

    Hum? Kannst du mir das mal erklären?

    So wie ich das sehe, hat er gemeint, dass sich die beiden Schleifen so wie eine einzige verhalten. Also
    [cpp]for(int a = 0, b = 0; a != 4 && b != 4; ++a, ++b);[cpp]



  • lol jo...thx...habs korrigiert... 🙂

    5+1=6 } Erster Durchlauf
    6+1=7
    7+1=8
    8+1=9

    9+1=10 } zweiter Durchlauf
    10+1=11
    11+1=12
    12+1=13

    13+1=14 } dritter Durchlauf
    14+1=15
    15+1=16
    16+1=17

    17+1=18 } Vierter Durchlauf
    18+1=19
    19+1=20
    20+1=21

    jetzt weiss ich schonmal wie das mit dem Zählen gemeint ist....

    das was ich da jetzt aufgeschrieben hab sind 4 Durchläufe also "a" da a<5=4
    aber wo ist "b"?



  • Erster Durchlauf a=1:
    5+1=6 // b=0
    6+1=7 // b=1
    7+1=8 // b=2
    8+1=9 // b=3

    zweiter Durchlauf a=2:
    9+1=10 // b=0
    10+1=11 // b=1
    11+1=12 // b=2
    12+1=13 // b=3

    dritter Durchlauf a=3:
    13+1=14 // b=0
    14+1=15 // b=1
    15+1=16 // b=2
    16+1=17 // b=3

    Vierter Durchlauf a=4:
    17+1=18 // b=0
    18+1=19 // b=1
    19+1=20 // b=2
    20+1=21 // b=3

    Da oben is dein b 🙂



  • http://img3.imagebanana.com/img/cdvczb6/thumb/lol....jpg

    Ehm...wenn ich das in c++ eingebe komm ich nur auf 20^^



  • wenn der wert 6 wär würd er mir 21 ausspucken oh man ich bin sowas von geliefert nachher xD dazu komm noch das ich erklären muss wie man zu einem fertigen programm kommt und wie ein programm aufgebaut ist -.-
    thx 4 help...



  • ProtoX schrieb:

    http://img3.imagebanana.com/img/cdvczb6/thumb/lol....jpg

    Ehm...wenn ich das in c++ eingebe komm ich nur auf 20^^

    verwende in dem fall besser

    cout << ++wert << endl;
    

    und mach dir klar, warum 😉



  • ja aber das wär ja dann die veränderung der aufgaben stellung 😉 von meinem Lehrer



  • die hast du ja selbst schon geändert

    der wert von wert ist am ende der schleife korrekt bei 21, du gibst mit dem cout jedoch stets den wert vor der erhöhung aus. also erscheint erst die 20, dann wird erhöht. wert hat dann 21, aber das gibst du nichtmehr aus.
    dreht man den operator also um (++wert), dann wird erst erhöht, dann ausgegeben.

    das cout sollte also, wenn überhaupt, NACH der schleife einmal ausgeführt werden, nicht jedesmal erneut.



  • achsoo.......alles klar 🙂 verstanden 🙂 also 21 ist die lösung die ausgabe ist verschieden 🙂

    k ich meld mich wenn ich es geschafft hab 😛



  • Hm okay hier bin ich xD

    naja so an sich war die Arbeit Easy.... aufgaben waren unter anderem:

    Welche werkzeuge benutzen wir um ein Programm herzustellen?

    Warum können wir den Computer nicht direkt sagen was er tun soll warum geht das nur mit den Programmiersprachen?

    Schreiben sie ein Programm dass....(Keine lust das grad auf zu schreiben xD )

    Welche werte kommen bei folgenden for schleifen raus?

    a)

    int wert=2
    
    for(int a=1;a<5;a++)
    
    { for(int b=0;b<3;b++)
    
    cout<<wert++<<endl;
    
    }
    

    waren insg. 4 schleifen wurden nach und nach schwieriger bin danach vorgegangen wir hier erstr selber durchzählen dann so eine Tabelle machen etc. wenn ich dir Klausur wieder hab scann ich sie ein + Lösungen^^

    thx an alle 😉 leider bin ihc mir nicht sicher ob ich es richtig hab da jeder ein anderes Ergebnis hat

    ich hab z.B 14 die anderen 4 oder 7 -.-^^

    naja...thx @all 🙂



  • a nimmt die Werte 1 1,2,3,4 an => 4 aussere Durchlaeufe
    b nimmt die Werte 0,1,2 an => 3 inner Durchlaeufe

    macht insgesamt 4*3 = 12 Durchlaeufe und Inkrements ==> 14 ist richtig 🙂



  • JAAA GEIL!!!!
    😃 😃 😃

    Aus mein Kollege sagt das zwar nur 13 angezeigt wird aber das liegt daran das doch wert++ ist und nicht ++wert das heisst 14 ist richtig nur ausgegeben wird 13.?!



  • ProtoX schrieb:

    Aus mein Kollege sagt das zwar nur 13 angezeigt wird aber das liegt daran das doch wert++ ist und nicht ++wert das heisst 14 ist richtig nur ausgegeben wird 13.?!

    Jap 👍


Anmelden zum Antworten