Hjälp med Lottoprogram i C
Hej!
Jag har precis börjat plugga på yrkeshögskolan till Mjukvaruutvecklare inom industriell IoT. Jag håller på med en uppgift i C där jag ska göra ett Lottoprogram. Jag är nästan färdig med alla delar( spelaren ska kunna välja mellan att få 7 nummer automatiskt slumpade eller att knappa in dem själv, därefter ska den rätta lottoraden slumpas fram) men jag får inte till det med dubbletter. När en dubblett slumpas fram ska det slumpas igen för att få ett nytt nummer. Jag vet inte längre vad jag ska göra för att få det att funka och hoppas att någon här har lust att kolla igenom/köra koden och berätta för mig hur jag ska göra för att lösa det för jag börjar bli desperat här..Tack på förhand.
#include <stdio.h>
#include <stdlib.h>//för rand-funktionen
#include <time.h>//för att rand ska generera
#include <conio.h>//för att kunna använda getch()
#include <windows.h>//för Sleep()
#include <stdbool.h>
void meny(void);
int automatisk();
int manuell();
int Lotto();
int resultat();
int val, nr;
int nummer[7];
int rättRad[7];
bool minBool;
int main(void)
{
srand(time(0));
printf("\nHej och välkommen till EC Lotto!\n");
printf("Det här spelet har dessvärre inga vinster.\n\n");
printf("Tryck ENTER för att fortsätta...\n\n");
getch();
meny();
return 0;
}
void meny()
{
printf("Gör ditt val: \n");
Sleep(600);
printf("1. Ge mig slumpmässiga val, tack! \n");
printf("2. Jag vill välja själv.\n");
scanf("%d", &val);
if(val==1)
{
automatisk();
Lotto();
resultat();
}
else if(val==2)
{
manuell();
Lotto();
resultat();
}
else
{
printf("Felaktigt val! Var god försök igen!");
meny();
}
}
int automatisk(void)
{
int i;
for ( i = 0; i < 7; i++)
{
do
{
nr=(rand()%35)+1;
minBool=true;
for (int j = 0; j < i; j++)
{
if(nummer[i]==nummer[j])
{
minBool=false;
}
}
}while(!minBool);
nummer[i]=nr;
Sleep(600);
printf("Nummer %d: %d\n", i+1, nr);
}
printf("\nTryck ENTER för att fortsätta...\n\n");
getch();
}
int manuell(void)
{
printf("Ange 7 stycken olika nummer: \n");
for (int i = 0; i < 7; i++)
{
do
{
printf("Ange nummer %d: ", i+1);
scanf("%d", &nummer[i]);
if(nummer[i]>35)
{
printf("Du kan inte ange ett tal större en 35!\n");
}
if(nummer[i]<1)
{
printf("Du kan inte ange ett tal mindre än 1!\n");
}
} while (nummer[i]<1 || nummer[i]>35);
}
}
int Lotto()
{
printf("Nu börjar dragningen!\n\n");
Sleep(700);
int i;
for (i = 0; i < 7; i++)
{
do
{
nr=(rand()%35)+1;
minBool=true;
for (int j = 0; j < i; j++)
{
if(rättRad[i]==rättRad[j])
{
minBool=false;
}
}
}while (!minBool);
rättRad[i]=nr;
Sleep(2000);
Beep(600, 600);
printf("Boll nummer %d blir... %d\n", i+1, nr);
}
}
//Funktion för att skriva ut
int resultat(void)
{
Sleep(2000);
printf("\nDina nummer:\n");
for (int i = 0; i < 7; i++)
{
printf("%d ", nummer[i]);
}
Sleep(2000);
printf("\n\nRätt lottorad: \n");
for (int i = 0; i < 7; i++)
{
printf("%d ", rättRad[i]);
}
Sleep(2000);
printf("\n\nTack för att du har spelat EC Lotto! Ha en bra dag!\n\n");
}