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.88gibt das Programm das aus:
Maximalwert: 78.990000
Minimalwert: -1.200000
Mittelwert: 38.638333Also alles richtig.
Wenn diese Werte drin stehen
17.88
44.78
78.99
1.2
70.5
20.88wird das ausgegeben:
Maximalwert: 78.990000
Minimalwert: 0.000000
Mittelwert: 39.038333also 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.