Meanvalue in C
-
Hier ein kleines Beispiel welches das Konzept erklären sollte, ohne deine Hausaufgaben zu machen
void func (int *bar) { // bar ist ein Zeiger auf ein int *bar = 2; // * heisst: Dereferenziere den Zeiger bar } int main (void) { int foo = 1; func (&foo); // Wir übergeben nicht foo, sondern die Adresse (Zeiger auf) von foo printf ("%d\n", foo); return 0; }
-
Die 2 was du
Meanvalue
übergibst bestimmt wie oft deine for-schleife durchlaufen wird. Wenn du also 2 übergibst wird immer nur feld_noten[0], feld_noten[1] und feld_noten[2] abgerufen. Wenn du also n Werte in deinem Array hast musst duMeanvalue
alsanzahl
n übergeben.Bei Zählergesteuerten Schleifen die ein Array durchlaufen muss die Laufvariable immer einen Wert kleiner sein als die Arraygröße ist.
Somit muss ein Schleifenkopf so aussehenfor (int i = 0; i < anzahl; i++)
-
Ok, Top. Bin etwas weiter gekommen. So sieht mein Code jetzt aus:
#include <stdio.h> #include<stdlib.h> typedef enum { false, true } bool; bool Meanvalue (int anzahl, int feld_noten[100], int *ausgabe); int main(void){ int feld_noten[100] = {5,2,3,4}; //for (int i = 0; i <= 5; i++){ //scanf("%d", &feld_noten[i]);} int ergebnis = 0; Meanvalue(2, feld_noten, &ergebnis); printf ("%d", ergebnis); return 0; } bool Meanvalue(int anzahl, int feld_noten[100], int *ausgabe){ if (anzahl <= 0){ return false;} int puffer = 0; int puffer1 = 0; for (int i = 0; i < anzahl; i++){ puffer = feld_noten[i] * 100; puffer1 = puffer + puffer1;} *ausgabe = puffer1 / anzahl; return true; }
Das letzte Problem ist, dass aus dem Array feld_noten nur die ersten beiden Werte an die Funktion übergeben werden. Also in diesem Beispiel nur 5 und 2. Wie kann ich das gesamte Feld an die Funktion übergeben?
-
Ok, Top. Bin etwas weiter gekommen. So sieht mein Code jetzt aus:
#include <stdio.h> #include<stdlib.h> typedef enum { false, true } bool; bool Meanvalue (int anzahl, int feld_noten[100], int *ausgabe); int main(void){ int feld_noten[100] = {5,2,3,4}; //for (int i = 0; i <= 5; i++){ //scanf("%d", &feld_noten[i]);} int ergebnis = 0; Meanvalue(2, feld_noten, &ergebnis); printf ("%d", ergebnis); return 0; } bool Meanvalue(int anzahl, int feld_noten[100], int *ausgabe){ if (anzahl <= 0){ return false;} int puffer = 0; int puffer1 = 0; for (int i = 0; i < anzahl; i++){ puffer = feld_noten[i] * 100; puffer1 = puffer + puffer1;} *ausgabe = puffer1 / anzahl; return true; }
Das letzte Problem ist, dass aus dem Array feld_noten nur die ersten beiden Werte an die Funktion übergeben werden. Also in diesem Beispiel nur 5 und 2. Wie kann ich das gesamte Feld an die Funktion übergeben?
-
Steht doch schon da:
axels. schrieb:
Die 2 was du
Meanvalue
übergibst bestimmt wie oft deine for-schleife durchlaufen wird. Wenn du also 2 übergibst wird immer nur feld_noten[0], feld_noten[1] und feld_noten[2] abgerufen. Wenn du also n Werte in deinem Array hast musst duMeanvalue
alsanzahl
n übergeben.
-
Hallo,
wie wäre es denn mit: IDEOne ?
-
Also der Code sieht jetzt so aus. Trotzdem werden nur die ersten zwei Werte übergeben. Danach bricht die For-Schleife ab.
#include <stdio.h> #include<stdlib.h> typedef enum { false, true } bool; bool Meanvalue (int anzahl, int feld_noten[100], int *ausgabe); int main(void){ int feld_noten[100]; int ergebnis = 0; for (int i = 0; i <= 5; i++){ scanf("%d", &feld_noten[i]); Meanvalue(i, feld_noten[i], &ergebnis);} printf ("%d", ergebnis); return 0; } bool Meanvalue(int anzahl, int feld_noten[100], int *ausgabe){ if (anzahl <= 0){ return false;} int puffer = 0; int puffer1 = 0; for (int i = 0; i < anzahl; i++){ puffer = feld_noten[i] * 100; puffer1 = puffer + puffer1;} *ausgabe = puffer1 / anzahl; return true; }
-
Was wäre eigentlich so schlimm daran gewesen, einfach die richtige Länge des Arrays als Parameter zu übergeben?
int feld_noten[100] = {5,2,3,4}; // 4 Elemente im Array Meanvalue(4, feld_noten, &ergebnis); // Länge = 4
-
So jetzt funktioniert es. Vielen Dank für die Hilfe. Hier ist meine Lösung:
#include <stdio.h> #include<stdlib.h> typedef enum { false, true } bool; bool Meanvalue (int anzahl, int feld_noten[100], int *ausgabe); int main(void){ int feld_noten[100]; int anzahl = 0; int ergebnis = 0; for (int i = 0; i <= 5; i++){ scanf("%d", &feld_noten[i]); anzahl = i;} Meanvalue(anzahl, feld_noten, &ergebnis); printf ("%d", ergebnis); return 0; } bool Meanvalue(int anzahl, int feld_noten[100], int *ausgabe){ if (anzahl <= 0){ return false;} int puffer = 0; int puffer1 = 0; for (int i = 0; i < anzahl; i++){ puffer = feld_noten[i] * 100; puffer1 = puffer + puffer1;} *ausgabe = puffer1 / anzahl; return true; }
-
Leider hast du nicht alle Aufgabenteile erfüllt.