C/C++ Programmierung

Aufgabe 5

Schreiben Sie ein Programm, welches N (<=MAX_N) (MAX_N mit #define festgelegt) double-Zahlen einliest (scanf"%lf", &x) und dann das Minimum, Maximum und den (arithmetrischen) Mittelwert ausgibt.

Geben Sie außerdem an, wie viele Werte um weniger als 10% vom Mittelwert abweichen.

Lösung für die Aufgabe

/* Header-Datei einbinden */
#include <stdio.h>

#define MAX_N 3 /* Anzahl der Zahlen */

int main(void) /* hier beginnt das Hauptprogramm */
{
  int anzahl, i;
  double zahlen[MAX_N], min, max, mittel;

  for (i = 0; i < MAX_N; i++)
  {
    printf("%d.zahl eingeben:", i + 1);
    scanf("%lf", &zahlen[i]); /* Zahl einlesen */
  }

  min = max = mittel = zahlen[0]; /* 1. Zahl in min,max und mittel schreiben */
  for (i = 1; i < MAX_N; 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 /= MAX_N; /* 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 < MAX_N; 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++;
  }

  printf("Anzahl der Werte, die weniger als 10%% vom Mittelwert abweichen: %d\n", anzahl);

  return(0); /* Das Hauptprogramm gibt am Ende 0 zurück, da kein Fehler aufgetreten ist. */
}


Zurück zur Übersicht