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. */
}