while schleifen?



  • mit gotos kann man sehr komplizierte lange routinen schreiben:-d



  • wenn's schon ums verkürzen von Code geht, dann muß ich sagen is MaSTaHs Beispiel ziemlich aufgebläht für das, daß nix wirklich drin gemacht wird..des ganz etwas zusammengeschrumpft:

    int i=0;
    while( (++i) != 20) ;
    

    😉



  • Noch mehr zusammengeschrumpft:

    i = 20;



  • 😃

    wenn die Schleife aber dafür gemacht worden wäre, das Programm für ein paar Nanosekunden aufzuhalten, wäre es nicht mehr ganz dasselbe 😉



  • @Mastah 😉

    int i = 0;
    while()
    {
      ++i;
      if(i == 20)
        break;
    }
    


  • Original erstellt von Lars:
    Entweder du veräppelst uns oder du gibst uns mehr Infos.

    Nein nein, ich will euch ganz und gar nicht veräppeln!
    Ich weiß halt nur nicht so genau wie schleifen funktionieren.

    Bespielsweise ich will das so machen:

    Ich habe eine Zahl, sagen wir 12345.

    Ich möchte die erste zahl mal 5 nehmen und das ergebnis speichern.
    Dann möchte ich die zweite zahl mal 9 nehmen und das ergebnis zu meinem vorherigen ergebnis dazunehmen.
    dann möchte ich die 3te zahl mal 2 nehmen und das zu meinem ergebnis hinzuzählen. usw...

    Ich weiß, gleich werden mich viele auslachen, aber bis jetzt mach ich sowas so:

    int nZahl;
    int nNummer1;
    int nNummer2;
    int nNummer3;
    int nNummer4;
    int nNummer5;
    int nErgebnis;
    
    UpdateData(TRUE);
    nZahl = m_iZahl; //in unserem fall 12345
    stelle = 4; // 3. von rechts (mit 0 anfangen)  In unserem fall die 1.
    int nNummer1 = (nZahl % (int)pow(10, stelle+1)) / (int)pow(10, stelle);
    
    stelle = 3; // 3. von rechts (mit 0 anfangen)  In unserem fall die 2.
    int nNummer2 = (nZahl % (int)pow(10, stelle+1)) / (int)pow(10, stelle);
    
    stelle = 2; // 3. von rechts (mit 0 anfangen)  In unserem fall die 3.
    int nNummer3 = (nZahl % (int)pow(10, stelle+1)) / (int)pow(10, stelle);
    
    stelle = 1; // 3. von rechts (mit 0 anfangen)  In unserem fall die 4.
    int nNummer4 = (nZahl % (int)pow(10, stelle+1)) / (int)pow(10, stelle);
    
    stelle = 0; // 3. von rechts (mit 0 anfangen)  In unserem fall die 5.
    int nNummer5 = (nZahl % (int)pow(10, stelle+1)) / (int)pow(10, stelle);
    
    nErgebnis = (nNummer1*5)+(nNummer2*9)+(nNummer3*2)+(nNummer4*12)+(nNummer5);
    

    So siehts bei mir im moment aus. Es führen zwar viele wege nach Rom, aber ich bin mir ziemlich sicher das diese lösung irgendwie nicht so das wahre ist.

    Kann ich soetwas z.B nicht in einer while schleife oder so verkürzen? Würde mir dir übersichtlichkeit ziemlich erleichtern.

    Danke im Vorraus



  • int Nummer[5];
    int Ergebnis;
    UpdateData(TRUE);
    for(int i=0;i<5;++i)
    {
      Nummer[i]=(m_iZahl % static_cast<int>(pow(10,i+1)) / static_cast<int>(pow(10,i)));
    }
    Ergebnis = (Nummer[4]*5)+(Nummer[3]*9)+(Nummer[2]*2)+(Nummer[1]*12)+(nNummer[0]);
    

    so als idee

    warum verwendest du bei den prefixen mal i und mal n?
    (bzw. warum überhaupt prefixe)



  • @all
    Scherzkekse 😉 . Wenn ich jetzt ein break genommen hätte wäre die nächste Frage gewesen: "Wie setze ich effektiv break ein?"



  • mit nem array für die gewichte könnte alles in eine schleife rein.



  • prefixe

    Immer dieses Denglisch. Entweder Präfixe oder prefixes!


Anmelden zum Antworten