while Schleife



  • #include <conio.h>
    #include <stdio.h>

    int main(void)
    {
    int Programmzähler=0;
    int Beenden=0;
    while(Beenden == 100)
    {

    printf("Um das Programm nochmals auszuführen geben sie die Zahl 100 ein : ");
    scanf("%i",&Beenden);
    Programmzähler=Programmzähler+1;

    }
    printf("\nDas Programm wurde Beendet\n");
    printf("Das Programm wurder %imal Ausgefuehrt",Programmzähler);
    }

    Mit dem Programm soll erreicht werden dass es wenn ich die zahl 100 eingebe es wiederholt werden sollte.
    Nun das Problem ich programmier es und bekomme keine Fehler angezeigt aber es Programm scheint einfach durch zu laufen und wartet nicht einmal auf eine eingabe :S



  • whileSchleifenVersteher schrieb:

    #include <conio.h>
    #include <stdio.h>
    
    int main(void)
    {
    	int Programmzähler=0;
    	int Beenden=0;
    	while(Beenden == 100)
    	{
    	
    		printf("Um das Programm nochmals auszuführen geben sie die Zahl 100 ein : ");
    		scanf("%i",&Beenden);
    		Programmzähler=Programmzähler+1;
    		
    	}
    	printf("\nDas Programm wurde Beendet\n");
    	printf("Das Programm wurder %imal Ausgefuehrt",Programmzähler);
    }
    

    Gleich bei der ersten Überprüfung in while ist die Bedingung falsch. Also wird garnichterst in die Schleife gegangen.
    Also entweder Beenden am Anfang auf 100 setzen, oder eine do-while Schleife benutzen.



  • int Beenden=0;
    while(Beenden == 100)
    

    Du setzt Beenden auf 0 und prüfst dann ob es 100 ist. Das ist natürlich nicht der Fall, deswegen wird der Rumpf der while Schleife nicht betreten. Da dein scanf im Rumpf der while Schleife ist, die nicht betreten wird, wird es nicht aufgerufen.



  • Also wäre die einzigste Lösung in der Aufgabenstellung zu schreiben: Geben sie Um das Programm zu beenden geben sie die Zahl 100 ein

    und while auf (Beenden != 100) zu seten ?



  • lagalopex schrieb:

    Also entweder Beenden am Anfang auf 100 setzen, oder eine do-while Schleife benutzen.

    🙄



  • Die Nächste Aufgabenstellung lautet:

    Aufgabe 2
    Die Funktion der vorherigen Aufgabe soll noch einmal in einem Programm realisiert werden. Dieses
    mal aber in einer strukturierten Programmierform mit verschiedenen Funktionen.
    Für die Realisierung der while-Bedingung soll eine eigene Funktion int GetZahl ( ? ) geschrieben
    werden.
    Das eigentliche Programm soll ebenso in einer eigenen Funktion programmiert werden.
    In der main-Funktion sollen dadurch möglichst wenig Anweisungen stehen, die diese Funktionen
    aufrufen.
    Zusätzlich sollen die Durchläufe des Programms gezählt und auf dem Bildschirm ausgegeben
    werden (in einer eigenen Funktion programmiert).

    ich habe es so versucht zu realisieren bekomme aber Zugriffsverletzungsfehler 😞 was hab ich Falsch gemacht?

    #include <conio.h>
    #include <stdio.h>
    
    int WhileFunktion (int rückgabe);
    int Ausgabe (int Text);
    
    int main(void)
    {
    	int Rückgabewert,Leer=0,Übergabe;
    	Rückgabewert=WhileFunktion(Leer);
    	Übergabe=Ausgabe(Leer);
    }
    int WhileFunktion (int rückgabe)
    {
    	int Programmzähler=0,Zahl=100;
    	while (Zahl = 100)
    	{
    		printf("Geben sie 100 ein um das Programm zu wiederholen");
    		scanf("%i",Zahl);
    		Programmzähler=Programmzähler+1;
    	}
    	return (Programmzähler);
    }
    int Ausgabe(int Text)
    {
    	printf("Das Programm wurde %imal ausgegeben",Text);
    	return (Text);
    }
    


  • 2 Fehler:

    while(Zahl = 100) // Vergleich sieht anders aus
    
    scanf("%i",Zahl); // Adresse von Zahl übergeben, sonst bumm!
    


  • danke das programm funktioniert jetzt, leider

    funktioniert der Teil noch nicht

    int Ausgabe(int Text)
    {
    	printf("Das Programm wurde %imal ausgegeben",Text);
    	return (Text);
    }
    

    es wird 0 ausgegeben



  • Dann schau mal, mit welchem Wert du die Funktion überhaupt aufrufst?
    Dir scheint der Unterschied zwischen Rückgabewert und Parameter einer Funktion noch nicht klar zu sein.

    Am besten, du benutzt dafür einen Debugger!


Anmelden zum Antworten