programm wiederholen do-while Schleife



  • Guten Tag Community

    wir sollen als Aufgabe ein Programm schreiben das
    Minima,maxima usw bestimmt

    das Programm soll sich auch wiederholen lassen.

    Die do-while schleife soll die Funktion wiederholen

    aber leider tut sie es nicht 😃

    hatte den code aber eig schon in einer anderen Aufgabe da hat es funktioniert

    kann mir da evt jemand helfen??

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <ctype.h>
    
    //Prototypendeklation//
    void eingabe(float*,int*);
    void get_statistikwerte(int,float*,float*);
    void ausgabe(float*);
    
    int main (void)
    {
    	float* zahlen_feld;
    	char nochmal;
    	int dimension,index=0;
    	float ergebnisse[5]={0};
    
    	do
    	{
    
    		//Textausgabe und einlesen der Var dimension//
    		printf("Von wievielen Werten moechten sie die       Statistikwerte      bestimmen?\n");
    		scanf ("%i",&dimension);
    
    		//Dynamisch den Speierchplatz der var zahlen_feld reservieren//
    		zahlen_feld=(float*)malloc(dimension*sizeof(float));
    
    		//Abfrage ob die Reservierung erfolgeich war//
    		if(zahlen_feld == NULL)
    		{
    			printf("Speicherplatz konnte nicht reserviert werden");
    			return (0);
    		}
    
    		//Funktion eingabe wird aufgerufen//
    		eingabe(zahlen_feld,&dimension);
    
    		//funktion statistikwerte wird aufgerufen//
    		get_statistikwerte(dimension,zahlen_feld,ergebnisse);
    
    		//funktion ausgabe wird aufgerufen//
    		ausgabe(ergebnisse);
    
    		//while schleife um programm neu zu starten//
    
    		printf("\n moechten sie nochmal Spielen J/N?");
    		scanf("%c",&nochmal);
    		nochmal=toupper(nochmal);/*wert von nochmal auf groß damit der Benutzer j oder J eingeben kann*/
    	}	
    	while(nochmal=='J');/*wenn J fängt das programm oben bei der do schleife wieder an*/
    
    	//tastaturspeicher loeschen und auf eingabe warten//
    	free(zahlen_feld);
    	fflush(stdin);
    	getchar();
    	return (1);
    
    }
    


  • Hallo,

    hab zwar lange nicht mehr in C programmiert, aber ich hab noch in Erinnerung
    das man nach einer Eingabeaufforderung den Eingabepuffer leeren muss,
    weil sonst die Gefahr besteht das im Eingabepuffer noch was drin steht und dadurch die nächste Eingabe einfach übersprungen wird...

    Deswegen glaube ich, wiederholt er das ganze nicht nochmal, denn ansonsten
    sehe ich keinen Fehler im Quelltext...

    Das heißt du müsstest an dieser Stelle

    //Textausgabe und einlesen der Var dimension//
    printf("Von wievielen Werten moechten sie die       Statistikwerte      bestimmen?\n");
    scanf ("%i",&dimension);
    

    nach der Eingabeaufforderung einmal fflush(stdin); aufrufen...

    Ich hoffe es funktioniert, kann es nämlich auf diesem Rechner leider gerade nicht testen... 🙂



  • ah Super da haste mich auf den richtigen weg gebracht!!

    Nachdem ich es an das ende von jeder Funktion geschrieben habe funktioniert es

    ich danke dir

    vg phil



  • Lest euch beide mal dies hier durch:
    http://www.c-plusplus.net/forum/39349



  • Oh... du hast Recht, ich hab vergessen dass das Verhalten der Funktion nicht standardisiert ist, aber wie gesagt, habe lange nicht mehr in C programmiert. :p


Anmelden zum Antworten