C: Lottospiel 6 aus 49 - keine doppelte Ziehung?
Verfasst: Sa Feb 13, 2016 10:18 am
Hallo zusammen,
ich bin ganz neu dabei und betreibe C als Hobby. Es brennt also nicht
Als kleinen "Meilenstein" hatte ich mir vorgenommen ein Lotto-Spiel zu schreiben. Es soll folgende Funktionen haben:
1. Benutzer gibt 6 Tipps zwischen 1-49 ab. OK
2. Programm prüft ob Tipp valide ist (= Zahl zwischen 1-49). OK
3. Programm generiert 6 zufällige Lottozahlen. (PROBLEM, s.u.).
4. Programm zeigt an, wie viele richtige Tipps dabei sind. OK
5. Programm fragt ob noch mal gespielt werden soll. OK
Soweit ist es fertig und funktioniert auch wie gewünscht. ABER es hat noch einen großen Fehler - die zufällig generierten Lottozahlen können doppelt auftauchen. Das soll natürlich nicht passieren... habt ihr einen Tipp für mich?
Ich bin mir sicher das man das ganze "Spiel" deutlich schlanker programmieren kann, soweit bin ich aber noch nicht
Viele Grüße
Matthias
ich bin ganz neu dabei und betreibe C als Hobby. Es brennt also nicht

Als kleinen "Meilenstein" hatte ich mir vorgenommen ein Lotto-Spiel zu schreiben. Es soll folgende Funktionen haben:
1. Benutzer gibt 6 Tipps zwischen 1-49 ab. OK
2. Programm prüft ob Tipp valide ist (= Zahl zwischen 1-49). OK
3. Programm generiert 6 zufällige Lottozahlen. (PROBLEM, s.u.).
4. Programm zeigt an, wie viele richtige Tipps dabei sind. OK
5. Programm fragt ob noch mal gespielt werden soll. OK
Soweit ist es fertig und funktioniert auch wie gewünscht. ABER es hat noch einen großen Fehler - die zufällig generierten Lottozahlen können doppelt auftauchen. Das soll natürlich nicht passieren... habt ihr einen Tipp für mich?
Ich bin mir sicher das man das ganze "Spiel" deutlich schlanker programmieren kann, soweit bin ich aber noch nicht

Viele Grüße
Matthias
Code: Alles auswählen
// Spiel 6 aus 49, Version 0.6
// (c)2016 Tubalkain
//
// Offene Punkte:
// 1. Fehlermeldung bei Fehleingabe. ERLEDIGT mit do/while Funktion
// 2. Keine Doppelte Ziehung.
// 3. Superzahl-System
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
int main()
{
char c;
do
{
// Es werden die Zahlen getippt und gespeichert //
int z1, z2, z3, z4, z5, z6; // Das sind die Tipps.
printf("\n\t LOTTO 6 aus 49\n");
printf("\nBitte geben Sie Ihre 6 Tipps ab.");
printf("\nDanach werden die Lottozahlen gezogen,");
printf("\nund geprüft wie viele richtige Tipps");
printf("\nSie abgegeben haben. Viel Glueck!\n");
do
{
printf("\nBitte geben Sie Ihren 1. Tipp: ");
scanf("%d", &z1);
}while(z1<0 || z1>49);
do
{
printf("\nBitte geben Sie Ihren 2. Tipp: ");
scanf("%d", &z2);
}while(z2<0 || z2>49);
do
{
printf("\nBitte geben Sie Ihren 3. Tipp: ");
scanf("%d", &z3);
}while(z3<0 || z3>49);
do
{
printf("\nBitte geben Sie Ihren 4. Tipp: ");
scanf("%d", &z4);
}while(z4<0 || z4>49);
do
{
printf("\nBitte geben Sie Ihren 5. Tipp: ");
scanf("%d", &z5);
}while(z5<0 || z5>49);
do
{
printf("\nBitte geben Sie Ihren 6. Tipp: ");
scanf("%d", &z6);
}while(z6<0 || z6>49);
// Es beginnt die Ziehung der Lottozahlen //
printf("\nDie Zahlen werden gezogen.....\n");
Sleep(1000); // Sleep für den dramaturgischen Effekt
srand ( time(NULL) );
int l1 = rand() %49+1; // Jetzt kommen die einzelnen Zahlen. Aber wie verhindern das doppelt?
int l2 = rand() %49+1;
int l3 = rand() %49+1;
int l4 = rand() %49+1;
int l5 = rand() %49+1;
int l6 = rand() %49+1;
//Laden und zeigen der Lottozahlen//
printf("\nDie Lottozahlen lauten: \n");
Sleep(1000);
printf("\n\t%d\n", l1);
Sleep(1000);
printf("\n\t%d\n", l2);
Sleep(1000);
printf("\n\t%d\n", l3);
Sleep(1000);
printf("\n\t%d\n", l4);
Sleep(1000);
printf("\n\t%d\n", l5);
Sleep(1000);
printf("\n\t%d\n", l6);
Sleep(1000);
//Nach den Richtigen Treffern suchen//
int richtige = 0;
if(z1 == l1 || z1 == l2 || z1 == l3 || z1 == l4 || z1 == l5 || z1 == l6)
{
richtige = richtige +1;
}
if(z2 == l1 || z2 == l2 || z2 == l3 || z2 == l4 || z2 == l5 || z2 == l6)
{
richtige = richtige +1;
}
if(z3 == l1 || z3 == l2 || z3 == l3 || z3 == l4 || z3 == l5 || z3 == l6)
{
richtige = richtige +1;
}
if(z4 == l1 || z4 == l2 || z4 == l3 || z4 == l4 || z4 == l5 || z4 == l6)
{
richtige = richtige + 1;
}
if(z5 == l1 || z5 == l2 || z5 == l3 || z5 == l4 || z5 == l5 || z5 == l6)
{
richtige = richtige + 1;
}
if(z6 == l1 || z6 == l2 || z6 == l3 || z6 == l4 || z6 == l5 || z6 == l6)
{
richtige = richtige + 1;
}
if(richtige > 0)
{
printf("\nHERZLICHEN GLUECKWUNSCH! Sie haben %d richtige!!\n", richtige);
}
else
{
printf("\nSchade... keine richtigen Treffer.\n");
}
printf("\n\nWollen Sie Ihr Glueck noch mal versuchen? (J/N)? ");
scanf("%c", &c);
c = getchar();
printf("\n");
}
while(c == 'J' || c == 'j');
return 0;
}