C# Wieso doppelter wert im array?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Inuyashaxp, 9. Dezember 2007 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 9. Dezember 2007
    Hi Leute,

    Ich wollte so nen kleines Lottoprogramm für nen Freund schreiben, also das er zufallszahlen generiert, aber jeder Zahl nur 1 mal im Array sein soll.

    Aber irgentwie klappt das nicht, den es kommt vor das Zahlen mehr als 1 mal vorkommen im Array und ich versteh nicht wieso.

    hoffe ich könnt mir helfen.

    Code:
     Random r = new Random();
     int[] lotto = new int[36];
     bool doppelt = false;
     for (int i = 0; i < lotto.Length; i++)
     {
     int zufallszahl = r.Next(1,50);
     for (int a = 0; a < lotto.Length; a++)
     {
     if (lotto[a] == zufallszahl) doppelt = true;
     else doppelt = false;
     }
     
     if (doppelt == true)
     {
     i--;
     continue;
     }
     lotto[i] = zufallszahl;
     }
    
     for (int i = 0; i < lotto.Length; i++)
     {
     Console.WriteLine("#" + i + " " + lotto[i]);
     }
    
    Mfg Inu
     
  2. 9. Dezember 2007
    AW: C# Wieso doppelter wert im array?

    Auf die schnelle viel mir jetzt erstmal das rote auf.
    Sollte wohl eher lotto[a] sein?
     
  3. 9. Dezember 2007
    AW: C# Wieso doppelter wert im array?

    jo hab ich auch grad gesehen, schon edited, allerdings gehts immer noch net :/

    gruß
     
  4. 9. Dezember 2007
    AW: C# Wieso doppelter wert im array?

    Mach das else doppelt = false; weg.

    Ansonten prüft er im Prinzip einfach nur ob die letze Zahl im Array bereits existiert, da ja "doppelt" dann bei der nächsten Zahl eventuell wieder auf false gesetzt wird, egal was mit der davor war.
     
  5. 9. Dezember 2007
    AW: C# Wieso doppelter wert im array?

    wenn ich das else doppelt = false; weg mach, ist doppelt nach dem ersten durchlauf dauernd "true" und deshalb endlos schleife :/
     
  6. 9. Dezember 2007
    AW: C# Wieso doppelter wert im array?

    Die Endlosschleife kommt daher, das "doppelt" beim nächsten Durchlauf nicht mehr auf false zurückgesetzt wird.

    Schreib das "= false" direkt under den Kopf, dann müsst alles passen
     
  7. 9. Dezember 2007
    AW: C# Wieso doppelter wert im array?

    was meinst du mit kopf?
     
  8. 9. Dezember 2007
    AW: C# Wieso doppelter wert im array?

    ich meinte "for (int i = 0; i < lotto.Length; i++)"
    Das is für mich der Schleifenkopf


    Code:
     Random r = new Random();
     int[] lotto = new int[36];
    
     for (int i = 0; i < lotto.Length; i++)
     {
     bool doppelt = false;
     int zufallszahl = r.Next(1, 50);
     for (int a = 0; a < lotto.Length; a++)
     {
     if (lotto[a] == zufallszahl)
     doppelt = true;
     }
    
     if (doppelt == true)
     {
     i--;
     continue;
     }
     lotto[i] = zufallszahl;
     }
    
     for (int i = 0; i < lotto.Length; i++)
     {
     Console.WriteLine("#" + i + " " + lotto[i]);
     }
     
  9. 9. Dezember 2007
    AW: C# Wieso doppelter wert im array?

    Danke ! es funktioniert, allerdings versteh ich nicht wieso auf einmal,

    der bool wird ganz am anfang auf false gesetzt.

    Sobald die zahl schonmal vorhanden ist, wird der bool true.

    Beim nächsten durchgang wird ja wieder überprüft ob die zahl schonmal vorhanden ist, und wenn nicht wird der bool ja auf false gesetzt.

    check nicht wieso das jetzt so nen unterschied mach^^

    Gru´ß
     
  10. 9. Dezember 2007
    AW: C# Wieso doppelter wert im array?

    Naja, nachdem du die Zufallszahl berechnet hast gehst du ja das Array durch und schaust ob sie bereits vorkommt. Nehmen wir jetzt an, die erste Zahl ist die Zufallszahl. Dann wird doppelt auf 'true' gesetzt.
    Jetzt überprüfst du aber die nächste Zahl im Array. Wenn die nicht gleich ist wird doppelt wieder auf 'false' gesetzt.

    Du prüfst so also im Prinzip nur die letze Zahl im Array, da doppelt ja jedes Mal überschrieben wird.
     
  11. 9. Dezember 2007
    AW: C# Wieso doppelter wert im array?

    AHH danke ^^ jetzt check ichs, boah is das kompliziert in C#^^ php is viel einfacher ^^

    closed
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.