Vektoren - Anzahl der Zufallszahlen ermitteln
-
Hi,
bei einem C-Programm, bei dem Zufallszahlen durch 100 geteilt werden und die Anzahl dieser Rechnungen gezählt werden, habe ich ein Problem. Ich kann das Programm nicht ausführen!
#include <stdio.h> #include <stdlib.h> #include <math.h> #define W 1000 int stellenzahl(int zufall[W], int n); int main() { int i, n=3, zufall[W], anzahl; for (i=0; i<W; i++) { zufall[i]=rand()%1000+1; scanf("%d", &zufall[i]); } anzahl=stellenzahl(zufall[W], n); printf("Die Anzahl betraegt:%d", anzahl); return 0; } int stellenzahl(int zufall[W], int n) { int i, anzahl=0; for (i=0; i<W; i++) { if (zufall[i]/100>1.0) { anzahl++; } } return anzahl; }
Der Fehler liegt in den Vektoren, jedoch finde ich ihn nicht.
Gruss,
shm
-
Hallo shm,
ein Fehler liegt in der Zeile Nr. 18:
anzahl=stellenzahl(zufall[W], n);
Hier übergibst du der Funktion stellenzahl() als erstes
Argument mit zufall[W] nicht das Array, sondern den Eintrag
an der Position W, der übrigens über das Array hinaus geht,
da es nur Element zwischen 0..W-1 gibt.Richtig wäre:
anzahl=stellenzahl(zufall, n);
Gruß mcr
-
Dazu kommt dann noch, dass ich den (Un-)Sinn von Zeile 16 nicht verstehe:
Mit scanf() liest du Eingaben vom stdin ein.
D.h. Zuerst weist du dem Eintrag i mit rand()%1000+1 eine Zahl zwischen
1 und 1000 zu und anschließend überschreibst du die selbe Stelle mit
einer Eingabe vom Benutzer. *Merkwürdig*Gruß mcr
-
Du hast eine Funktion, die ein Array erwartet - und du hast ein (mit Zufallswerten gefülltes) Array - also mußt du auch dieses Array übergeben und kein einzelnes Element (schon gar keins, was außerhalb des Arrays liegt):
anzahl = stellenzahl(zufall,n);
PS: wozu braucht die Funktion eigentlich den Parameter "n"?
-
ok. Eure Antworten sind alles klar und plausibel. Nach der Änderung des Programmes komme ich jedoch immer noch zu keinem Ergebnis.
int main() { int i, n=3, zufall[W], anzahl; for (i=0; i<W; i++) { zufall[i]=rand()%1000+1; } anzahl=stellenzahl(zufall, n); printf("Die Anzahl betraegt:%d", anzahl); return 0; } int stellenzahl(int zufall, int n) { int i, anzahl=0; for (i=0; i<W; i++) { if (zufall[i]/100>1.0) { anzahl++; } } return anzahl; }
-
Der Prototyp/Funktionskopf deiner Funktion war schon richtig - nur der Aufruf stimmte nicht.
-
danke, jetzt habe ich ein funktionstüchtiges Programm!