komme nicht weirer (parameterübergabe)



  • #include <stdio.h>
    
    void einlesen(int c[],int d)
    {
    int i=0;
    printf ("Bitte Eingabe machen\n");
    while(c[i] != EOF && i<d)
      {
      scanf ("%i",&c[i]);
      i++;
      }
    }
    
    int mittelwert(int c[],int d)
    {
      int i,sum=0;
      float mittel;
      for (i=d;i>=0;i--)
        {
          sum = (sum+ c[i]);
          mittel = sum/d;
          printf("%i", mittel);
        }
        return 0;
    }
    int main()
    {
    int y=3;
    int x[y];
    einlesen(x,y);
    mittelwert(x,y);
    return 0;
    }
    

    Der Mittelwert klappt bei mir nicht, wie kann ich denn das Ergebnis von der einlesen in die Funktion Mittelwert bekommen?

    Bin für jede Hilfe dankbar 😉



  • SAON schrieb:

    int i,sum=0;
    float mittel;
    for (i=d;i>=0;i--)
    {
    sum = (sum+ c[i]);
    mittel = sum/d;
    printf("%i", mittel);
    }

    sum/d ist eine Ganzzahldivision bei der abgerundet wird; dass du das Ergebnis anschließend als float speicherst ändert nichts daran. Was du möchtest ist

    mittel = (float)sum / d;
    

    Und um floats (oder doubles) mit printf auszugeben, muss du im Formatsting %f und nicht %i verwenden.

    Außerdem musst du die Schleife bei i=d-1 beginnen.



  • #include <stdio.h>
    
    int einlesen(int c[],int d)
    {
      int i=0;
      printf ("Bitte Eingabe machen\n");
      while((c[i]=getchar()) != EOF)
        {
        if (i>=d)
          return -1;
        scanf ("%i",&c[i]);
        i++;
        }
    
    }
    
    int mittelwert(int c[])
    {
    int b;
      while(c)
      {b++;}
    
      int i,sum=0;
      float mittel;
      for (i=b;i>=0;i--)
        {
          sum = (sum+ c[i]);
          mittel = (float)sum/b;
        }
      printf ("%.2f",mittel);
      return 0;
    }
    
    int main()
    {
    int y=20;
    int x[y];
    einlesen(x,y);
    mittelwert(x);
    return 0;
    }
    

    ok nun bin ich soweit aber immer noch einige probleme 😉
    irgendwie kann ich mehr als 20 werte einlesen..
    EOF mit Strg+D funktioniert nicht.. kann jemand weiterhelfen?



  • warum gibst du nicht alle werte auf einmal ein und scanst sie anschließend?



  • es muss so lange eingelesen werden bis EOF erreicht...

    http://www.gm.fh-koeln.de/advlabor/Aufgaben/AP1/prak8.pdf
    Aufg3

    int einlesen(int* c,int d) 
    {
      int i=0;
      printf ("Bitte Eingabe machen\n");
      while((c[i]=getchar()) != EOF)
        {
        if (i>=d)
          return -1;
        scanf ("%i",&c[i]);
        i++;
        }
    return 0; 
    }
    

    wie kann ich das Array mit den eingelesen Werten denn wieder zurückgeen


Anmelden zum Antworten