Fußgesteuerte While-Do Schleife



  • Hi,
    ich bin gerade dabei ein Programm zu schreiben, dass solange zahlen einliest bis eine 5 eingegeben wird.
    Ist dies so richtig?

    #include <stdio.h>
    
    int main()
    
    {
    	int zahl;
    	zahl = 5;
    
    	do {
    		printf("\nBitte geben Sie die richtige Zahl ein: "
    
    		);
    		scanf("%d", &zahl );
    
    	}
    	while(zahl < 5 || zahl > 5);
    printf("Danke.\n");	
    	}
    

    Was muss daran noch ändern?
    Bitte um hilfe 😞

    Edit durch Arcoth: Code-Tags



  • Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum C (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • while( zahl!=5 )
    

    Macht es leserlicher.
    Das Problem, was du haben kannst, ist, dass das erste printf erst nach dem scanf angezeigt werden kann.
    Ich würde nach dem printf in der Schleife noch sowas schreiben:

    fflush(stdout);
    

  • Mod

    CPlusBoy schrieb:

    Was muss daran noch ändern?
    Bitte um hilfe 😞

    Hilfe wobei? Gibt es irgendein Problem, das nach einer Änderung verlangt?



  • Hallo,
    erstmal danke für die Antworten 😉
    Es müssten doch zuerst Zahlen eingelesen werden und dann gebe ich 5 ein, damit das Zahlen einlesen beendet wird. Ich weiß aber nicht wie ich das richtig programmieren soll.



  • CPlusBoy schrieb:

    Hallo,
    erstmal danke für die Antworten 😉
    Es müssten doch zuerst Zahlen eingelesen werden und dann gebe ich 5 ein, damit das Zahlen einlesen beendet wird. Ich weiß aber nicht wie ich das richtig programmieren soll.

    wenn ich dich richtig verstanden habe würde ich es so machen.
    du kannst 5-Werte eingeben oder "Beenden" um zu Beenden.

    #include <string>
    #include <iostream>
    
    int main()
    
    {
        int zahl;
        std::string eingelesen[5];
    
        zahl = 0;
    
        do
        {
            std::cout << "Bitte geben Sie die richtige Zahl ein: " << std::endl;
            std::cin >> eingelesen[zahl];
    
            if ( eingelesen[zahl].compare( "Beenden" ) == 0 )
            {
            	break; //unterbricht while-schleife
            }
    
            zahl++;
        }
        while( zahl != 5 ); // anzahl d. eingegeben-werte (von 0)
    
        std::cout << "Danke.\n" << std::endl;
    
        // ausgabe des arrays (test)
        for( int it = 0 ; it != 5 ; it++)
        {
        	std::cout << "Test-Ausgabe: " << eingelesen[it] << std::endl;
        }
    }
    


  • nachtrag:
    mein code ist in c++ ich weiß nicht genau willst du c oder c++ coden?
    der thread ist i.wie auch in c(alle ISO-Standards) verschoben...

    sry wenns falsch war, hab ich erst eben gesehen ... 😞

    hoff ich konnt etwas helfen
    lg



  • Hier einmal in C:

    #include <stdio.h>
    
    int main(void)
    {
        int c;
        int zahl = 0;
    
        do
        {
            printf("Bitte geben Sie eine Zahl ein:");
            fflush(stdout);
            scanf("%d",&zahl);
            while ((c = getchar()) != EOF && c != '\n');
            printf("\n");
        } while(zahl != 5);
    
        printf("Danke.\n");
        getchar();
        return 0;
    }
    

    fflush(stdout) ist bei mir nicht notwendig.



  • CPlusBoy schrieb:

    [...]dass solange zahlen einliest bis eine 5 eingegeben wird.

    test23 schrieb:

    wenn ich dich richtig verstanden habe würde ich es so machen.
    du kannst 5-Werte eingeben oder "Beenden" um zu Beenden.

    Wie kann man die Aussage falsch verstehen?



  • snwFlake schrieb:

    CPlusBoy schrieb:

    [...]dass solange zahlen einliest bis eine 5 eingegeben wird.

    das hat er aber nicht geschrieben...

    snwFlake schrieb:

    test23 schrieb:

    wenn ich dich richtig verstanden habe würde ich es so machen.
    du kannst 5-Werte eingeben oder "Beenden" um zu Beenden.

    Wie kann man die Aussage falsch verstehen?

    ich weiß nicht genau ob er "5 zahlen" oder eine "5" eingeben will um zu beenden.
    ist dir das klar?

    was trägt deine aussage eig zur lösung des problems bei? 🙄


Anmelden zum Antworten