Ich habe heute mal zwecks üben ein C-Programm geschrieben, dass mir mein Info-Lehrer aufgegeben hat.
Das ist die Angabe:
ZitatAlles anzeigenEs ist ein C-Programm zu erstellen, welches den Mittelwert, das Minimum und das
Maximum einer Zahlenfolge bestimmen soll. Der Benutzer gibt zunächst die Anzahl der
Zahlen ein. Diese Anzahl muss ein Wert zwischen 2 und 10 sein. Anschließend werden die
Zahlen eingegeben, wobei die Zahlenwerte zwischen -100.0 und +100.0 (100.0 und -100.0
sind auch noch zulässig) liegen dürfen.Anschließend berechnet das Programm den Mittelwert, das Minimum und das Maximum
und gibt diese Zahlen am Bildschirm aus.Die Anzahl der Zahlen ist natürlich eine Ganzzahl, alle restlichen Zahlen sind Gleitkommazahlen.
Die Eingaben sind auf Plausibilität zu prüfen. Fehlerhafte Eingaben sind zu
wiederholen. Die Zahlenreihe ist als Feld zu definieren.Die Hauptfunktion main() ruft folgende Funktionen auf: eingabe(), berechne(), ausgabe()
Die erste Funktion eingabe() ist für die Eingabe einer Gleitkommazahl zuständig. Sie hat
drei Wertparameter text, min und max, sowie einen Rückgabewert. Der Wertparameter text
enthält den Ausgabetext für den Anwender. Der Anwender gibt eine Zahl ein. Wenn diese
Zahl kleiner als min oder größer als max ist, dann wird die Eingabe (inklusive Ausgabe des
Textes) wiederholt. Sobald der Benutzer eine gültige Zahl eingegeben hat, wird die Funktion
beendet und die eingegebene Zahl im Rückgabewert dem Aufrufer übermittelt.Die Funktion berechne() ist für die Berechnung des Mittelwertes, des Minimal und des
Maximalwertes zuständig. Sie hat einen Wertparameter anzahl und vier Zeigerparameter
zahlen, mittel, min und max. Diese Funktion gibt direkt keinen Wert zurück, sondern
übermittelt die Berechnungsergebnisse mit Hilfe der Zeigerparameter (Referenzparameter).Die Funktion ausgabe() ist für die Ausgabe des Mittelwerts, des Minimalwertes und des
Maximalwertes zuständig. Sie bekommt diese Werte als Wertparameter und gibt diese
Informationen mit Hilfe eines geeigneten Textes am Bildschirm aus.
Soweit so gut. Ich habe das Programm mal runtergeschrieben und da kommt auch schon meine Frage.
Also das Programm funktioniert und liefert die richtigen Werte.
Hier der C-Code:
#include <stdio.h>#include <stdlib.h>double eingabe (char text[], double min, double max){ int rueck; char s[80]; double eingabe; do { printf(text); gets(s); rueck=sscanf(s,"%lf",&eingabe); } while(rueck!=1 || eingabe<min || eingabe>max); return eingabe;}void berechne (double anzahl,double *zahlen,double *mittel, double *min,double *max){ int i; double hilf=0; for (i=0;i<anzahl;i++) { *zahlen=eingabe (" Zahl : ",-100,100); hilf=*zahlen+hilf; if (*min>*zahlen) *min=*zahlen; if (*max<*zahlen) *max=*zahlen; } *mittel=hilf/2;}void ausgabe (double mittel,double min,double max){ printf("Ergebnis:\n\n"); printf(" Mimimum: %.2lf\n", min); printf(" Mittelwert: %.2lf\n", mittel); printf(" Maximum: %.2lf\n", max);}int main(){ double anzahl; double wert; double min,max,mittel; printf("PLF4 (2AHME-G2, 7.6.2010)\n"); printf("--------------------------\n\n"); anzahl=eingabe ("Anzahl der Zahlen: ",2,10); printf("\n"); berechne (anzahl,&wert,&mittel,&min,&max); printf("\n"); ausgabe (mittel, min, max); return 0;}
Und hier der Abschnitt der mir fragwürdig vorkommt:
Diese zwei if-Schleifen sollen jeweils den MIN- und MAX-Wert der eingegebenen Zahlen herausfinden. Von der Logik her versteh' ich diese if-Schleifen, aber welchen Wert hat *min bzw. *max zum Zeitpunkt der Schleife? Soweit ich weiß sind da irgendwelche Werte gespeichert. Denn ich habe denen keinen Wert zugewiesen.
Bin mal gespannt ob ich hier im VO einen finde der mir das erklären kann. Ich zähle auch euch