Witam. :)
Piszę prosty symulator lotto. I napotkałem pewien błąd podczas sprawdzania czy dana liczba podana przez użytkownika nie powtórzyła się. Program działa i sprawdza tą liczbę ale tylko następną po sobie. Możemy użyć liczby 42 podczas pierwszego wpisywania za drugim razem nie możemy ale za 3 znowu możemy. Wiem ,że błąd leży po mojej stronie (i-1 zawsze bedzie sprawdzało tylko jedną liczbę do tyłu a nie każda) lecz nie wiem jak sobie z nim poradzić. Próbowałem z dodatkową pętla ale jakoś mi to nie poszło (zgłupiałem).
#include <windows.h>
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int los(int liczby[6], int losowane[6], int punkty)
{
for(int i=0; i<6; i++)
{
do{
cout<<"Liczba "<<i+1<<":";
cin>>liczby[i];
if(liczby[i]<=0 || liczby[i]>=50)
{
cout<<"Liczba nie miesci sie w przedziale od 1 do 49. \nPodaj liczbe z przedzialu: ";
cin>>liczby[i];
}
}while((liczby[i]<=0) || (liczby[i]>=50));
////////////////////////////////////
//Sprawdzanie zaczyna się tutaj:
////////////////////////////////////
do{
if(liczby[i]==liczby[i-1])
{
cout<<"Podales juz taka liczbe.\nPodaj inna liczbe: ";
cin>>liczby[i];
}
}while(liczby[i]==liczby[i-1]);
}
cout<<"Losowanie rozpocznie sie za: ";
for(int i=5; i>=0; i--)
{
//Sleep(1000);
cout<<i<<"\b";;
}
cout<<"\nTwoje liczby to: ";
for(int i=0; i<6; i++)
{
cout<<liczby[i]<<" ,";
}
cout<<"\n Wylosowane liczby: ";
for(int i=0; i<=5; i++)
{
losowane[i]=rand()%49+1;
cout<<losowane[i]<<", ";
}
}
int main()
{
int liczby[6],losowane[6],punkty;
HANDLE hOut;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
srand( time( NULL ) );
SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
cout << "Witamy w Lotto.\n Za 5 sekund zostanie zwolniona blokada losujaca.\n Zostanie wylosowane 6 liczb z przedzialu od 1 do 49." << endl;
cout<<"Podaj swoje 6 liczb.\n";
los(liczby,losowane,punkty);
system("pause");
return 0;
}