while schleifen?



  • Hi!

    Ich benutze häufig komplizierte rechenroutinen in meinen Programmen. Diese werden mit der Zeit sooo lang, das ich da später nichtmehr durchsteige. Ich denke mit einer while schleife lässt sich vieles verkürzen. Kann mir einer nen link zu ner Seite geben wo erklärt ist, wie man while (oder andere) schleifen effektiv einsetzen kann? Wenn es geht bitte in Deutsch, aber English wäre auch ok. Danke im Vorraus



  • Was meinst du mit "effektiv einsetzen"?
    Btw: hat nix mit der MFC oder dem VC++ zu tun. Verschoben!



  • Entweder du veräppelst uns oder du gibst uns mehr Infos.



  • @Perner
    Was gibt es da groß zu wissen?

    bool flag = true;
    int i = 0;
    while(flag == true)
    {
      ++i;
      if(i == 20)
        flag = false;
    }
    

    Solange die Bedingung erfüllt ist (flag == true) läuft er weiter. Halt ein prechecked loop.

    Aber das mit dem "effektiv einsetzen" verstehe ich auch nicht so ganz. Da wäre eine AUsschnitt aus dem Code hilfreich wo du die Schleife benutzen willst.



  • ich frage mich wie kompliziert die rechenroutinen sein können wenn man nichtmal weiss wie eines der primitivsten schleifen konstrukte realisierbar ist. 🙄



  • 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