rückgabewert einer funktion
-
hallo forum, ich bin noch nicht lange am programmieren und hoffe auf hilfe bei einem problem mit funktionen:
die funktion soll das produkt von zufallszahlen aus einem zeiger-array im intervall n1 bis n2 berechnen und ausgeben. der funktionskopf wurde vom prof so vorgegeben. zeiger darf man wohl nicht multiplizieren, aber wie berechne ich das ergebnis sonst am gescheitesten??? im moment ist das ergebnis undefinierter müll.
int finden(int *z, int N, int n1, int n2) { int speicher; for(int j=0; j<N; j++) if(((*(z+j)) >= n1) && ((*(z+j)) <= n2)) speicher *= *(z+j); return speicher; }
-
was soll der parameter N darstellen?
hm, und ich erklär mal nix, sondern geb einfach mal ne variante vor. bin grad zu faul ^^
int finden(int *z, int N, int n1, int n2) { int speicher = *(z+n1); // mit nem wert initialisieren, sonst steht da mist drin for( ++n1 ; n1 <= n2; ++n1 ) speicher *= *(z+n1); return speicher; }
-
vielen dank, aber ich muss die aufgabenstellung wohl präziser wiedergeben:
das intervall n1 bis n2 bezog sich auf die werte der zufallszahlen nicht auf die indizes des array!
bsp:
n1 = 10
n2 = 20z[]=(5,17,104,11,9)
ergebnis der funktion = 17*11
mit N soll wohl die anzahl der feldelemente übergeben werden... wie gesagt, der funktionskopf wurde in der aufgabe so vorgegeben.
so, weiß nochmal jemand rat? ich denke der fehler liegt in der anweisung der if-funktion, der rest scheint zu klappen...
-
Ja, Zeiger kann man nicht multiplizieren, aber dafür kannst du Zeiger-Arithmetik verwenden, um an die Elemente des Arrays zu kommen, auf das sie zeigen - das i'te Element des Arrays ab p erreichst du entweder mit *(p+i) oder (kürzer) mit p[i]*.
(und diese Elemente kannst du dann vergleichen oder multiplizieren ;))PS: Deswegen solltest du deine Hilfsvariable trotzdem initialisieren (da ist wohl 1 der passende Startwert).
* Wenn du besonders kryptisch schreiben willst - i[p] ist auch erlaubt und führt zum selben Resultat
-
danke nochmal,
nachdem ich der hilfsvariablen den startwert 1 gegeben habe läuft alles so wie gewollt.
-
insulaner schrieb:
das intervall n1 bis n2 bezog sich auf die werte der zufallszahlen nicht auf die indizes des array!
das kommt davon, wenn man im halbschlaf fragen beantwortet ^^