Struktogramm richtig gelöst?



  • http://www.1webspace.biz/pitchy/Unbenannt.JPG
    

    Hallo zusammmen,
    ich hab diese Struktogramm versucht zu lösen, bin mir aber nicht sicher, ob ich richtig vorgegangen bin! Stecke, was Programmieren angeht noch in den Kinderschuhen.

    so sieht meine syntax dazu aus

    #include <stdio.h>
    
    int main()
    {
    
       int j=1;
       int i=1;
    
       do{
    
           if(i<=5){
               printf ("das ist i %d\n",i);
           }
    
           if(j<=4){
               printf("das ist j %d\n",j);
               j++;
           }
    
           else if (i++);
    
       }while(i<=5);
    
        return EXIT_SUCCESS;
    }
    

    Würde mich freuen wenn mir jemand helfen könnte.

    Beste Grüße pitchy



  • nicht ganz. Die Äußere Bedingung ist ok (bis auf das else if (++i)). Du kannst aber in diesem Fall auch eine For Schleife verwenden.

    j ist im Prinzip wieder eine for Schleife, die bei jedem Durchlauf von i ausgeführt wird

    Dann so

    #include <stdio.h>
    
    int main()
    {
       int j=1;
       int i=1;
    
       do{
    
           /* unnötig, da die Schleife nur ausgeführt wird, wenn i < 5
           if(i<=5){
               printf ("das ist i %d\n",i);
           } */
    
           printf ("das ist i %d\n",i);
    
           j = 1;
           do {
               printf("das ist j %d\n",j);
               j++;
           } while(j<=4);
    
           i++;
       }while(i<=5);
    
        return EXIT_SUCCESS;
    }
    

    oder mit for-Schleifen

    #include <stdio.h>
    
    int main()
    {
       int i,j;
       for(i = 1; i <= 5; ++i)
       {
          printf("i = %d\n", i);
          for(j = 1; j <= 4; ++j)
              printf("j = %d\n", j);
       }
        return EXIT_SUCCESS;
    }
    


  • Mit dem for Schleifen, finde ich persönlich auch besser, wollte ich auch erst so lösen, aber ich glaube die erste Lösung kommt dem Struktogramm näher oder nicht?

    Bei der zweiten Lösung sind ja zwei {} um die zweite for schleife, ist das sowas wie eine verschachtelte "for"?

    Finde die Ausgaben, sehr verwirrend.Aber das muss so, wenn man sich nachdem Struktogramm richtet?

    Danke schonmal für die rasche Anwort.



  • Oder ohne do...while 😉

    #include <stdio.h>
    
    int main(void){
    	int i,j;
    
    	i = 1;
    
    	while(i<=5){
    		printf("i = %d\n", i);
    		j = 1;
    		while(j<=4){
    			printf("j = %d\n", j);
    			j++;
    		}
    		i++;
    	}
    	return 0;
    }
    


  • pitchy schrieb:

    Mit dem for Schleifen, finde ich persönlich auch besser, wollte ich auch erst so lösen, aber ich glaube die erste Lösung kommt dem Struktogramm näher oder nicht?

    beide kommen gleich nach. Nur eine andere Syntax.

    int i=1;
    do{
      ETWAS
      ++i;
    } while( i < BEDINDUNG);
    

    ist äquivalent zu

    int i;
    for(i=1; i < BEDINGUNG; ++i)
      ETWAS
    

    oder

    int i=1;
    while(i < BEDINGUNG){
      ETWAS
      ++i;
    }
    

    es wird damit dasselbe ausgedruckt.

    // edit: manchmal kann es Unterschiede zwischen do-while Schleifen und while Schleifen geben. Wenn BEDINGUNG nämlich 1 ist, dann wird die do-while Schleife nur einmal ausgeführt und die while Schleife gar nicht.

    pitchy schrieb:

    Bei der zweiten Lösung sind ja zwei {} um die zweite for schleife, ist das sowas wie eine verschachtelte "for"?

    ja genau, da ist eine for-Schleife in einer for-schleife.



  • #include <stdio.h>
    
    int main()
    {
        int i, j;
    
        i = 1;
    
    l1:
        if (i <= 5)
        {
            printf("das ist i %d\n", i);
            j = 1;
    l2:
            if (j <= 4)
            {
                printf("das ist j %d\n", j);
                j = j + 1;
                goto l2;
            }
            else
            {
                i = i + 1;
                goto l1;
            }
        }
        return EXIT_SUCCESS;
    }
    


  • Aufgabe "summa cum laude" bestanden.



  • supertux schrieb:

    int i=1;
    do{
      ETWAS
      ++i;
    } while( i < BEDINDUNG);
    

    ist äquivalent zu

    int i;
    for(i=1; i < BEDINGUNG; ++i)
      ETWAS
    

    isses gar nicht.
    🙂



  • fricky schrieb:

    supertux schrieb:

    int i=1;
    do{
      ETWAS
      ++i;
    } while( i < BEDINDUNG);
    

    ist äquivalent zu

    int i;
    for(i=1; i < BEDINGUNG; ++i)
      ETWAS
    

    isses gar nicht.
    🙂

    Warum nicht?



  • Weils so sein müsste

    int i; 
    for(i=1; ++i < BEDINGUNG; ) 
      ETWAS
    


  • Semmelknödel schrieb:

    Warum nicht?

    wenn am anfang BEDINGUNG <= i ist, verhälts sich anders.
    🙂



  • da fällt mir noch was ein 🙂

    wenn ich einen satz also ein string 10 mal ausgeben lassen will

    könnte ich es ja einfach so machen oder ?

    #include <stdio.h>
    
    int main()
    {
    
        int i;
    
          for(i=1;i<=10;i++){
              printf("SATZ \n",i);
          }
        return 0;
    }
    

    oder lieber so?

    #include <stdio.h>
    
    int main()
    {
        char string[10]="SATZ";
        int i;
    
          for(i=1;i<=10;i++){
              printf("%s \n",string);
          }
        return 0;
    }
    


  • Jacke wie Hose. 🙂



  • Schreiben Sie in der Sprache C eine for-Schleife, die 10 mal folgenden Satz ausgibt:
    „Programmieren macht Spass!“

    also wäre die lösung für sowas passend? 🙂



  • fricky schrieb:

    isses gar nicht.
    🙂

    stimmt, hab's später gemerkt, aber da war schon mein Notebook aus, und hab mich jetzt erst wieder eingeloggt. Schande über mich.



  • pitchy schrieb:

    Schreiben Sie in der Sprache C eine for-Schleife, die 10 mal folgenden Satz ausgibt:
    „Programmieren macht Spass!“

    also wäre die lösung für sowas passend? 🙂

    Probier es doch aus. Du arbeitest mit einer for-Schleife und wenn auf dem Bildschirm der Text eben 10 mal ausgegeben wird, hast du die Aufgabe gelöst.


Anmelden zum Antworten