Programm soll Gleitkommawerte aus einer Datei lesen.



  • Nochmal mit Code-tags (Code markieren und auf den C-Button unter dem 😡 klicken.

    #include <stdio.h>
    
    int main()
    
    {
    	FILE *datei;
    	double x;
    	double mittel;
    	double summe;
    	double max;
    	double min;
    	double anzahl=0;
    
    	datei= fopen("punkte.txt", "r");
    
    	while(fscanf(datei,"%lf",&x) ==1)
    	{
    
    		anzahl++;		
    		summe = summe + x;
    		if(max<x ){
    			max = x;
    			}
    		if(min>x){
    			min = x;
    			} 
    
    	}
    
    	fclose(datei);
    
    	mittel = summe/anzahl;
    	printf("Maximalwert: %f\n",max); // %f ist für float und double (bei printf)
    	printf("Minimalwert: %f\n",min);
    	printf("Mittelwert: %f\n",mittel);
    
    	return 0;
    
    }
    

    Welchen Wert hat summe auf der rechten Seite in Zeile 20?
    Welchen Wert hat max in Zeile 21?
    Welchen Wert hat min in Zeile 24?



  • Meist du das man summe, max und min mit 0 vor besetzten muss?



  • wenn in der Datei punkte.txt diese Werte stehen

    17.88
    44.78
    78.99
    -1.2
    70.5
    20.88

    gibt das Programm das aus:
    Maximalwert: 78.990000
    Minimalwert: -1.200000
    Mittelwert: 38.638333

    Also alles richtig.

    Wenn diese Werte drin stehen
    17.88
    44.78
    78.99
    1.2
    70.5
    20.88

    wird das ausgegeben:
    Maximalwert: 78.990000
    Minimalwert: 0.000000
    Mittelwert: 39.038333

    also der minimalwert ist falsch



  • Ist ja klar, 0 ist kleiner als 1.2

    Du kannst min mit dem größten möglichen Wert und max mit dem kleinsten möglichen Wert vorbesetzen.
    Diese Werte sind Compiler- und Typabhängig.
    Schau mal in der float.h für Fließkommazahlen
    oder in der limits.h für ganzzahlige Typen nach.

    Eine andere Möglichkeit ist, indem du min und max gleich den ersten Wert zuweist.
    Dies funktioniert immer (solange du mindestens einen Wert hast), egal welchen Variablentyp du hast.


Anmelden zum Antworten