Holen Sie den Speicher für das Feld mit malloc und geben Sie ihn mit free wieder frei.
/* Header-Datei einbinden */ #include <stdio.h> int main(void) /* hier beginnt das Hauptprogramm */ { int anzahl, i, werte; double *zahlen, a, min, max, mittel; /* liest jetzt die Anzahl der Zahlen fuer das Feld ein */ printf("Anzahl der Zahlen, die verwendet werden sollen: "); scanf("%d", &werte); if (werte < 1) /* testen, ob min. 1 eingegeben wurde */ return(5); /* wenn nicht, dann das Programm mit ReturnCode=5 beenden */ /* Speicher fuer das Feld reservieren */ zahlen = (double *)malloc(sizeof(double) * werte); if (!zahlen) /* abfragen, ob der Speicher reserviert wurde */ return(10); /* wenn nicht, dann das Programm mit ReturnCode=10 beenden */ for (i = 0; i < werte; i++) { printf("%d.zahl eingeben:", i + 1); scanf("%lf", &a); /* Zahl einlesen */ zahlen[i] = a; /* Zahl in das Feld schreiben */ } min = max = mittel = zahlen[0]; /* 1. Zahl in min,max und mittel schreiben */ for (i = 1; i < werte; i++) { if (zahlen[i] < min) /* Wenn die zuletzt eingegebene Zahl kleiner als */ min = zahlen[i]; /* min ist, dann der Wert (min) merken. */ if (zahlen[i] > max) /* Wenn die zuletzt eingegebene Zahl größer als */ max = zahlen[i]; /* max ist, dann den Wert (max) merken. */ mittel += zahlen[i]; /* mittel=mittel+zahlen[i] (für den Mittelwert) */ } mittel /= werte; /* mittel durch die Anzahl der Zahlen teilen, Ergebnis ist dann der Mittelwert */ printf("Minimum : %lf\n", min); /* Minimalwert ausgeben */ printf("Maximum : %lf\n", max); /* Maximalwert ausgeben */ printf("Mittelwert: %lf\n", mittel); /* Mittelwert ausgeben */ anzahl = 0; for (i = 0; i < werte; i++) { /* überprüft, ob die Zahl weniger als 10% vom Mittelwert abweicht */ if (zahlen[i] < 0) { if ((zahlen[i] < (mittel - (mittel / 10))) && (zahlen[i] > (mittel + (mittel / 10)))) anzahl++; } else { if ((zahlen[i] > (mittel - (mittel / 10))) && (zahlen[i] < (mittel + (mittel / 10)))) anzahl++; } /* ist der Mittelwert=0 und die Zahl=0 dann die Anzahl+1 */ if ((mittel == 0) && (zahlen[i] == 0)) anzahl++; } /* ausgeben wieviele Werte weniger als 10% vom Mittelwert abweichen */ printf("Anzahl der Werte, die weniger als 10%% vom Mittelwert abweichen: %d\n", anzahl); free(zahlen); /* Speicher vom Feld wieder freigeben */ return(0); /* Das Hauptprogramm gibt am Ende 0 zurück, da kein Fehler aufgetreten ist. */ }