
Der Arduino „spielt“ für dich 6 Zahlen. Anschließend werden die Lottozahlen gezogen, aufsteigend sortiert und auf die Anzahl der übereinstimmenden Zahlen untersucht. Das Ergebnis wird im Seriellen Monitor angezeigt.

Definiere die Variablen:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
// Array für die angekreuzten Zahlen int SpielZahl[6]; // Array für die gespielten Zahlen und die Lottozahlen int LottoZahl[6]; // Minimum/Maximum der Zufallszahlen int Minimum = 1; int Maximum = 49; // Anzahl der zu ziehenden Zahlen int Anzahl = 6; |
Für die Bestimmung der Spielzahlen und die Ziehung der Lottozahlen wird jeweils eine Funktion verwendet:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
int Ziehung() { for (int i = 0; i < Anzahl; i++) { /* die Lottozahl gilt solange als bereits gezogen bis in der for-Schleife nachgewiesen wird, dass sie neu ist und BereitsGezogen den Wert false hat */ bool BereitsGezogen = true; while (BereitsGezogen) { // Zahl ziehen LottoZahl[i] = random(Minimum, Maximum); BereitsGezogen = false; /* Zufallszahl mit den bereits gezogenen Zahlen vergleichen i wird in der ersten for-Schleife hochgezählt alle bisherigen Zahlen (ii) werden mit den bisher gezogenen Zahlen (außer der gerade gezogenen) verglichen (ii < i) ist sie identisch, erhält BereitsGezogen den Wert true es wird erneut eine Zufallszahl bestimmt wenn die Zahl neu ist, (BereitsGezogen hat noch den Wert false) wird die while-Schleife verlassen und die nächste Zahl gezogen */ for (int ii = 0; ii < i; ii++) { if (LottoZahl[i] == LottoZahl[ii]) BereitsGezogen = true; } } } /* das Array mit den Zahlen wird an das Hauptprogramm zurückgegeben beim ersten Aufruf sind es die gespielten Zahlen beim zweiten Aufruf die gezogenen Lottozahlen */ return LottoZahl[Anzahl]; } |
Das Sortieren der Zahlen erledigt die Funktion ZahlenSortieren:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
void ZahlenSortieren(int Zahlen[], int Groesse) { // unsortierten Bereich des Arrays durchlaufen for (int i = 0; i < (Groesse - 1); i++) { // bei jedem Durchlauf wird das jeweils letzte Element weggelassen for (int ii = 0; ii < (Groesse - (i + 1)); ii++) { /* wenn die aktuelle Zahl größer als die nachfolgende Zahl ist -> aktuelle Zahl temporär speichern -> Zahlen vertauschen -> temporäre Zahl der nachfolgenden Zahl zuweisen */ if (Zahlen[ii] > Zahlen[ii + 1]) { int zwischengespeicherteZahl = Zahlen[ii]; Zahlen[ii] = Zahlen[ii + 1]; Zahlen[ii + 1] = zwischengespeicherteZahl; } } } } |
Der setup-Teil:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
void setup() { Serial.begin(9600); // auf serielle Verbindung warten while (!Serial); delay(1000); // Zufallsgenerator starten randomSeed(analogRead(A0)); Serial.println("z = Nächste Ziehung"); } |
Der loop-Teil beginnt mit dem Zurücksetzen der Strings und dem Zurücksetzen der Trefferanzahl. Mit SerielReadStringUntil() wird die Eingabe der Tastatur abgefragt. Dann werden die Lottozahlen gezogen.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
void loop() { String GespielteZahlen = ""; String GezogeneZahlen = ""; String AnzahlTreffer = ""; String Eingabe; int Treffer = 0; // auf serielle Eingabe warten while (Serial.available() > 0) { // solange lesen, bis return eingegeben wurde Eingabe = Serial.readStringUntil('\n'); } // wenn "z" eingegeben wurde if (Eingabe == "z") { // Ziehung der "angekreuzten" Zahlen Ziehung(); |
Anschließend wird das Array der gespielten Zahlen mithilfe der Funktion ZahlenSortieren aufsteigend sortiert und das Array als String (GespielteZahlen) zusammengesetzt.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
ZahlenSortieren(LottoZahl, 6); for (int i = 0; i < Anzahl; i++) { // String GespielteZahlen aus den Elementen des Arrays // LottoZahl zusammensetzen GespielteZahlen = GespielteZahlen + LottoZahl[i] + " "; /* dem Array SpielZahl (die „gespielten“ Zahlen) wird das identische Element des Arrays LottoZahl zugewiesen Dieser Schritt darf für die Ziehung der Lottozahlen nicht wiederholt werden. */ SpielZahl[i] = LottoZahl[i]; } |
Die Ziehung der Zahlen und das Sortieren der Zahlen wird für die eigentlichen Lottozahlen wiederholt..
|
1 2 3 |
// Ziehung der Lottozahlen Ziehung(); ZahlenSortieren(LottoZahl, 6); |
Jetzt sollen die übereinstimmenden Zahlen ermittelt werden:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Vergleichen der Elemente der Arrays SpielZahl und LottoZahl for (int i = 0; i < Anzahl; i++) { for (int ii = 0; ii < Anzahl; ii++) { // Übereinstimmung gefunden -> Treffer um 1 erhöhen // AnzahlTreffer: String für übereinstimmende Zahlen erzeugen if (SpielZahl[i] == LottoZahl[ii]) { AnzahlTreffer = AnzahlTreffer + SpielZahl[i] + " "; Treffer ++; } } } |
Für die Anzeige wird aus den Elementen des Arrays LottoZahl ein String (GezogeneZahlen) „zusammengebaut“.
|
1 2 3 4 5 6 |
// String GezogeneZahlen aus den Elementen des Arrays LottoZahl // zusammensetzen for (int i = 0; i < Anzahl; i++) { GezogeneZahlen = GezogeneZahlen + LottoZahl[i] + " "; } |
Die Anzeige im Seriellen Monitor:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// Anzeige Serieller Monitor Serial.println("Gespielte Zahlen"); Serial.println("-----------------------------"); Serial.println(GespielteZahlen); Serial.println("-----------------------------"); Serial.println("Gezogene Zahlen"); Serial.println("-----------------------------"); Serial.println(GezogeneZahlen); Serial.println("-----------------------------"); if (Treffer == 0) Serial.println("keine Treffer!"); else if (Treffer == 1) Serial.println("Treffer: " + AnzahlTreffer + "(" + String(Treffer) + " richtige Zahl)"); else Serial.println("Treffer: " + AnzahlTreffer + "(" + String(Treffer) + " richtige Zahlen)"); Serial.println("-----------------------------"); } } |
Der vollständige loop-Teil:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
void loop() { String GespielteZahlen = ""; String GezogeneZahlen = ""; String AnzahlTreffer = ""; String Eingabe; int Treffer = 0; // auf serielle Eingabe warten while (Serial.available() > 0) { // solange lesen, bis return eingegeben wurde Eingabe = Serial.readStringUntil('\n'); } // wenn "z" eingegeben wurde if (Eingabe == "z") { // Ziehung der "angekreuzten" Zahlen Ziehung(); /* Array Sortieren mit ArduinoSort sortArray(NameArray, AnzahlElemente) sortArrayReverse(NameArray, AnzahlElemente) */ ZahlenSortieren(LottoZahl, 6); // String GespielteZahlen aus den Elementen des Arrays LottoZahl // zusammensetzen for (int i = 0; i < Anzahl; i++) { GespielteZahlen = GespielteZahlen + LottoZahl[i] + " "; SpielZahl[i] = LottoZahl[i]; } // Ziehung der Lottozahlen Ziehung(); ZahlenSortieren(LottoZahl, 6); // Vergleichen der Elemente der Arrays SpielZahl und LottoZahl for (int i = 0; i < Anzahl; i++) { for (int ii = 0; ii < Anzahl; ii++) { // Übereinstimmung gefunden -> Treffer um 1 erhöhen if (SpielZahl[i] == LottoZahl[ii]) { AnzahlTreffer = AnzahlTreffer + SpielZahl[i] + " "; Treffer ++; } } } // String GezogeneZahlen aus den Elementen des Arrays LottoZahl // zusammensetzen for (int i = 0; i < Anzahl; i++) { GezogeneZahlen = GezogeneZahlen + LottoZahl[i] + " "; } // Anzeige Serieller Monitor Serial.println("Gespielte Zahlen"); Serial.println("-----------------------------"); Serial.println(GespielteZahlen); Serial.println("-----------------------------"); // Anzeige der Zahlen Serieller Monitor Serial.println("Gezogene Zahlen"); Serial.println("-----------------------------"); Serial.println(GezogeneZahlen); Serial.println("-----------------------------"); if (Treffer == 0) Serial.println("keine Treffer!"); else Serial.println("Treffer: " + AnzahlTreffer + ""); Serial.println("-----------------------------"); } } |
Ähnliche Projekte
- Einmaleinsreihen anzeigen
- Einmaleinsreihen – Anzeige mit Keyes-Fernbedienung
- Fußballtipp
- Geldautomat
- Kniffel – EEPROM verwenden
- Primzahlen ermitteln
- Satzmaschine
- Städte-Info
- Teiler bestimmen
- Vokale zählen
Letzte Aktualisierung:






