Witam napisałem krótki program ala symulator lotto. Program działa poprawnie póki co ale problemem jest że liczby które wpiszemy bądź program nam je wylosuje mogą się powtarzać. Stąd pytanie : Jak w łatwy sposób napisać pętle która będzie to sprawdzać bez potrzeby sprawdzenia wszystkich warunków. Oto kod :
#include <iostream>
#include <time.h>
#include <windows.h>
using namespace std;
int chybiltrafil ()
{
int k = rand()%60+1;
return k ;
}
int duzylotek()
{
int k;
cin >> k;
while((k>60)||(k<1))
{
cout << "Mozesz wypisac tylko liczbe z zakresu od 1 do 60!" << endl;
cout << "Podaj liczbe jeszcze raz";
cin >> k;
}
return k;
}
void baza()
{
cout << "SYMULATOR LOTTO" << endl;
cout << "1. Chybil trafil" << endl;
cout << "2. Duzy lotek" << endl;
}
int main()
{
int wynik[5];
baza();
srand(time(NULL));
int wybor; cin >> wybor;
while ((wybor>2)||(wybor<1))
{
cout << "Podaj odpowiedni numer ";
cin >> wybor;
}
switch(wybor)
{
case 1:
cout << "To twoje liczby : ";
for(int i=0; i<6; i++)
{
wynik[i] = chybiltrafil();
cout << wynik[i] << " " ;
}
break;
case 2:
for (int i=0; i<6; i++)
{
cout << "Podaj " << i+1 << " liczbe ";
wynik[i] = duzylotek();
}
cout << endl << "To twoje liczby : ";
for (int i=0; i<6 ; i++)
{
cout << wynik[i] << " ";
}
break;
}
cout << endl << "Teraz nastapi losowanie 6 liczb przez system : ";
int b[5];
for (int i = 0; i<6; i++)
{
Sleep(1000);
b[i] = rand()%60+1;
cout << "\a" << b[i] << " ";
}
int trafienie = 0;
for(int i = 0; i<6; i++)
{
for(int j = 0 ; j<6; j++)
{
if(wynik[j]==b[i])
{
trafienie++;
}
}
}
cout << endl << "Trafiles : " << trafienie << " liczb";
return 0;
}