/* ------------------------------------------------------------------------ */ /* messwerte.c */ /* Programm zur Eingabe/Verarbeitung von Messwerten */ /* ------------------------------------------------------------------------ */ #include /* ------------------------------------------------------------------------ */ /* Vektor mit bis zu 100 Messwerten */ /* ------------------------------------------------------------------------ */ #define SIZE 100 double x[SIZE]; /* ------------------------------------------------------------------------ */ /* Funktionsdeklarationen */ /* ------------------------------------------------------------------------ */ int einlesen(void); void ausgeben(int n); double mittelwert(int n); double maximum(int n); /* ------------------------------------------------------------------------ */ /* Hauptprogramm */ /* ------------------------------------------------------------------------ */ int main(void) { double xmit, xmax; int anzahl; anzahl = einlesen(); /* Messwerte eingeben */ xmit = mittelwert(anzahl); /* Mittelwert berechnen */ xmax = maximum(anzahl); /* Maximum berechnen */ /* Ausgabe der Ergebnisse */ ausgeben(anzahl); if(anzahl > 0) printf("Mittelwert = %.2f\n", xmit); if(anzahl > 0) printf("Maximalwert = %.2f\n", xmax); return 0; } /* ------------------------------------------------------------------------ */ /* Messwerte einlesen, bis der Anwender eine negative Zahl eingibt oder */ /* die maximale Anzahl der Messwerte erreicht ist */ /* ------------------------------------------------------------------------ */ int einlesen(void) { int anzahl; double messwert; for(anzahl = 0; anzahl < SIZE; ++anzahl) { printf("Messwert %d: ", anzahl + 1); scanf("%lf", &messwert); if(messwert < 0) break; /* Negative Zahl beendet die Eingabe! */ x[anzahl] = messwert; } return anzahl; } /* ------------------------------------------------------------------------ */ /* Alle n Messwerte ausgeben */ /* ------------------------------------------------------------------------ */ void ausgeben(int n) { if(n < 1) /* Keine Messwerte? --> Abbruch! */ { printf("Keine Messwerte!\n"); return; } int i; printf("\nListe der Messwerte:\n"); for(i = 0; i < n; ++i) printf("\tMesswert %d: %.2f\n", i + 1, x[i]); printf("\n"); } /* ------------------------------------------------------------------------ */ /* Maximalen Messwert ermitteln und zurueckgeben */ /* ------------------------------------------------------------------------ */ double maximum(int n) { if(n < 1) /* Keine Messwerte? --> Abbruch und Rückgabe von -1 */ { printf("Maximum kann nicht ermittelt werden!\n"); return -1; } int i; double max = x[0]; for(i = 1; i < n; i++) { if(x[i] > max) max = x[i]; } return max; } /* ------------------------------------------------------------------------ */ /* Mittelwert berechnen und zurueckgeben */ /* ------------------------------------------------------------------------ */ double mittelwert(int n) { if(n < 1) /* Keine Messwerte? --> Abbruch und Rückgabe von -1 */ { printf("Mittelwert kann nicht ermittelt werden!\n"); return -1; } int i; double mw; for(i = 0, mw = 0; i < n; ++i) { mw += x[i] / n; } return mw; }