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!


Anmelden zum Antworten