for/while-Schleife



  • @_matze: Danke für die Hilfe. Ich sehe das halt manchmal nicht, wo der Fehler ist und bin auch noch relativ am Anfang!

    Nun habe ich das gleiche Problem mit der do-while-Schleife

    int main() 
    { 
         int i;
         int j;
         i=1;
         do
         {
            printf("%d",i);
            i=i+1;
            j=1;
            do
            {
               printf("%d",j);
               j=j+1;
            }
            while(j<=5);
         }
         while(i<=10);
         printf("\n");
         getch();
    }
    

    Bitte nochmals um Hilfe!

    revoman



  • revoman schrieb:

    Nun habe ich das gleiche Problem mit der do-while-Schleife

    Die Lösung ist auch die Gleiche:

    Bei den for-Schleifen waren beide Ausgaben in der inneren Schleife. Warum ziehst du hier wieder eine Ausgabe in die äußere?



  • revoman schrieb:

    @_matze: Danke für die Hilfe. Ich sehe das halt manchmal nicht, wo der Fehler ist und bin auch noch relativ am Anfang!

    Nun habe ich das gleiche Problem mit der do-while-Schleife

    int main() 
    { 
         int i;
         int j;
         i=1;
         do
         {
            printf("%d",i);
            i=i+1;
            j=1;
            do
            {
               printf("%d",j);
               j=j+1;
            }
            while(j<=5);
         }
         while(i<=10);
         printf("\n");
         getch();
    }
    

    Bitte nochmals um Hilfe!

    revoman

    Da sind nur kleine Änderungen nötig und du kannst dich an meinem ersten Beispiel orientieren. Warum sieht deine do-while-Variante aus, als hättest du dir meine while-Lösung gar nicht angesehen? Wenn du willst, gehe eben von der funktionierenden while-Lösung aus.

    Bis zur großen Pause schaffst du das sicher! 😃 Wenn nicht, sehen wir mal weiter (dann sag, woran es hapert).



  • 😃 Danke!

    int main()
    {
         int i;
         int j;
         i=0;
         do
         {
           i=i+1;
           j=1;
           do
           {
              printf("%d%d",i,j);
              j=j+1;
           }
           while(j<=5);
         }
         while(i<=10);
         printf("\n");
         getch();
    }
    

    Nun gibt er aber i bis 11 aus 😡 ,warum?

    revoman



  • Darum 😡 (Ziffern beachten):

    // 1. Annahme: i sei am Ende des Durchlaufs 10
         do
         {
           i=i+1; // 3. i wird erhöht -> aus 10 wird 11
           j=1;
           do
           {
              printf("%d%d",i,j); //4. Ausgabe von 11
              j=j+1;
           }
           while(j<=5);
         }
         while(i<=10); // 2. Bedingung: i muss <= 10 sein. i ist 10, Bedingung erfüllt.
    


  • Ich hätte einfach mal das "=" wegnehmen müssen bei while(i<=10) 😃
    Oh man bin ich schlecht!

    Danke!!!

    revoman



  • LordJaxom hat es schon mehr als deutlich beschrieben. Deine Schleifenbedingung ist falsch. Vergleiche mit meinem ersten Post, spätestens dann wird's dir klar.

    Bei solchen Geschichten ist es ratsam, den Debugger zu nutzen.

    Falls du das Visual Studio benutzt: F10+F11 sollten deine Lieblingstasten sein! Damit kannst du schrittweise durch dein Programm gehen und alle Werte (z.B. von i und j) beobachten.



  • Ich bedanke mich bei allen für die Hilfe.Das Programm was ich verwende hat leider keinen Debugger und Visual Studio ist mir zu groß für meinen PC.

    revoman



  • revoman schrieb:

    Ich bedanke mich bei allen für die Hilfe.Das Programm was ich verwende hat leider keinen Debugger und Visual Studio ist mir zu groß für meinen PC.
    revoman

    Was hast du denn für einen Rechner? Nimm doch VS 6.0 z.B. die kostenlose Autorenversion. VS 6.0 ist schön schlank und schnell, auch auf kleinen Rechnern. Zum Debuggen (nicht nur)allemal gut zu gebrauchen.



  • revoman schrieb:

    Ich bedanke mich bei allen für die Hilfe.Das Programm was ich verwende hat leider keinen Debugger und Visual Studio ist mir zu groß für meinen PC.

    revoman

    asdsaf hat Recht, VS6.0 läuft sogar auf einem Pentium 1 (12 Jahre oder so alt) mit 64 MB RAM vernünftig, ist ja schließlich auch von 1998. Was hast du denn für einen Rechner, von dem du so wenig überzeugt bist?


Anmelden zum Antworten