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
Aufg3int 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