lotto



  • Hulio19 schrieb:

    Gebe es auf. Bringt nichts.

    du gibst auf?! mit den infos hier sollte man's doch hinbekommen. zeig doch mal dein programm und wo's zickt.
    🙂



  • +fricky schrieb:

    Hulio19 schrieb:

    Komme mit diesem Vektor/array nicht klar. Initialisiert habe ich den Vektor ja, nur weiß ich nicht, wie ich ihn in die Randomschleife reinbekomme?

    die aufgabe in anderen worten: du sollst für jede gezogene zahl ein array-element auf 1 setzen. ist es schon 1, dann wiederholst du die ziehung, bis du 6 einsen setzen konntest. hört sich doch einfach an, oder?

    lösche array
    setzte zähler auf 0
    schleife: solange der zähler ungleich 6 ist
       ziehe zufallszahl
       wenn array[zufallszahl] 0 ist dann
          setze array[zufallszahl] auf 1 und zähle zähler hoch
    schleife ende
    gib den index aller array-elemente aus die 1 sind
    fertig.
    

    🙂

    1. lösche array (zahl[0]=0?)
    2. setze zähler auf 0 (i=0)?
    3.schleife:
    while (i!=7)
    ...

    und danach geht nix mehr.

    PS: Ich hatte bis jetzt 3 h C-Kurs. Und vorher noch nie programmiert! 😞



  • Lösche Array:

    /* Du musst zu jedem Element gehen und es auf 0 setzen */
    for (i = 0; i < 50; i++)
        array[i] = 0;
    

    Setze Zähler auf:

    i = 0;
    

    Schleife:

    for (i = 0; i < 6; i++) {
        ...
    }
    

    oder

    while (i != 6) {
        ...
        i++;
    }
    


  • Hulio19 schrieb:

    1. lösche array (zahl[0]=0?)

    `int array[50];

    memset (array, 0, sizeof(array));

    `

    Hulio19 schrieb:

    2. setze zähler auf 0 (i=0)?

    so ähnlich:
    int z = 0;

    Hulio19 schrieb:

    3.schleife:
    while (i!=7)

    `while (z != 6)

    {

    ... // hier zufallszahl ziehen, array-element setzen (oder nicht) und zähler hochzählen (oder nicht)

    }

    `

    Hulio19 schrieb:

    Ich hatte bis jetzt 3 h C-Kurs. Und vorher noch nie programmiert! 😞

    dann musste noch üben. kopf hoch, das klappt schon.
    🙂



  • int array[50];
    memset (array, 0, sizeof(array));

    Geht das auch anders. So was haben wir ja nicht gelernt und wenn ich dann mit so ner Lösung komme wundert sich der Typ bestimmt. 🙂

    So sieht es bis jetzt aus:

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    
    main() {
      int zahl[50];
      int i;
      srand(getpid());
    
     for (i = 0; i < 50; i++) 
        zahl[i] = 0; 
        i=0;
           for (i = 0; i < 6; i++) {
               printf("%2d ", 1+rand()%49);
    
               }
    
    }
    


  • ^^das ist doch schon mal was. der schleifenzähler sollte aber nicht automatisch weiterzählen, sondern nur, wenn du ein array-element auf 1 setzen konntest d.h. schleifenkopf abändern zu: for (i = 0; i < 6;). ach ja, und statt des printf("%2d ", 1+rand()%49); in der schleife setzt du nun die array-elemente:

    if (!array[zufall]) 
    {
       array[zufall] = 1; 
       i++;
    }
    

    🙂



  • @+fricky

    Wenn ich jezt die .exe Datei ausführe, passiert gar nichts mehr.
    Kannst Du mir bitte nicht die Lösung hier reinstellen???
    Ich weiß, anders ist der Lerneffekt größer, jedoch schmeiß ich meinen
    Laptop gleich aus dem 16. Stock. Kann nicht mehr! Kopf platzt gleich und ich muss noch eine andere Aufgabe machen. Und das bei dem Wetter ... kopfschmerz...



  • Vielleicht siehst du dir mein Post nochmal an, Schleifen sind ueberfluessig ...



  • Also eigentlich suchst Du nach:

    int main(int argc, char *argv[])
    {
    	int i, j; 
    	int zahl[50];
    
    	for (i = 0; i < 50; i++)
    		zahl[i] = 0;
    
    	for (i = 0; i < 7; i++)
    	{
    		do
    		{
    			j = wurf();
    		} while (zahl[j]);
    		zahl[j]++; 
    	}
    	for (i = 0; i < 50; i++)
    		if (zahl[i])
    			printf("%d\n", i + 1);
    	return 0;
    }
    

    Eigentlich bin ich gegen Schlüsselfertiges, aber ich hab' grad den Horror vorm Löten ... meinst Du, Du kriegst die wurf() so hin, daß Papa auf Dich stolz sein kann? 😉



  • Hulio19 schrieb:

    Ich weiß, anders ist der Lerneffekt größer, jedoch schmeiß ich meinen
    Laptop gleich aus dem 16. Stock. Kann nicht mehr! Kopf platzt gleich und ich muss noch eine andere Aufgabe machen. Und das bei dem Wetter ... kopfschmerz...

    dann mach schluss für heute und geniesse die letzten sonnenstrahlen. morgen biste wieder fit und dann geht's wie von selbst.

    knivil schrieb:

    Vielleicht siehst du dir mein Post nochmal an, Schleifen sind ueberfluessig ...

    dein trick ist besser, aber so soll er's ja nicht machen. wahrscheinlich soll er erstmal lernen, wie arrays und schleifen funktionieren.
    🙂



  • dein trick ist besser, aber so soll er's ja nicht machen. wahrscheinlich soll er erstmal lernen, wie arrays und schleifen funktionieren.

    Nach 3 Stunden? Nein!



  • knivil schrieb:

    dein trick ist besser, aber so soll er's ja nicht machen. wahrscheinlich soll er erstmal lernen, wie arrays und schleifen funktionieren.

    Nach 3 Stunden? Nein!

    zu früh oder zu spät?
    🙂



  • +fricky schrieb:

    zu früh oder zu spät?
    🙂

    Der Trick ist vermutlich einfach nur zu falsch.



  • pointercrash() schrieb:

    +fricky schrieb:

    zu früh oder zu spät?
    🙂

    Der Trick ist vermutlich einfach nur zu falsch.

    ne, das geht: http://www.maths.abdn.ac.uk/~igc/tch/mx4002/notes/node83.html
    🙂



  • +fricky schrieb:

    ne, das geht: http://www.maths.abdn.ac.uk/~igc/tch/mx4002/notes/node83.html
    🙂

    Ei der Daus, stimmt ... wird tatsächlich eine 1/n- Verteilung draus. Vermeidet Fehlwürfe, super Sache, muß ich mir merken 😉


Anmelden zum Antworten