c++ Lotek - potrzebna zmiana


(Keigoo) #1

Witam, mam taki skrypt lotto, muszę go zmienić, by 2 razy sprawdzał czy liczby się nie powtórzyły. Pierwszy raz przy podawaniu, ma nie pozwolić na wpisanie 2 takich samych liczb, oraz na końcu ma sprawdzić czy liczby wylosowanie się nie powtórzył i zapobiec powtarzaniu.
Czy mógłby ktoś go tak przerobić? Byłbym bardzo wdzięczny.
Z góry dzięki.

#include
#include <windows.h>
#include <time.h>

using namespace std;

int liczba, punkt=0;

float strzal[5];

float losowanie[5];

int main()
{
cout << “Witaj w losowaniu! Za 3 sekundy nastapi zwolnienie blokady” << endl;

Sleep(3000);

srand(time(NULL));

for (int i=0; i<6; i++)
{
cout << "Podaj liczbe: ";
cin >>strzal;
losowanie=rand()%49+1;
}

for(int j=0;j<6;j++)
{
for(int k=0;k<6;k++)
{
if(strzal[j]==losowanie[k])
punkt++;
}

}
if (strzal[1]==losowanie[1])
{
punkt++;
}

else if(strzal[2]==losowanie[2])
{
punkt++;
}

else if(strzal[3]==losowanie[3])
{
punkt++;
}

else if(strzal[4]==losowanie[4])
{
punkt++;
}

else if(strzal[5]==losowanie[5])
{
punkt++;
}

else if(strzal[6]==losowanie[6])
{
punkt++;
}

cout << "Podane przez Ciebie liczby to: " << strzal[0] << ", " << strzal[1] << ", " << strzal[2] << ", " << strzal[3] << ", " << strzal[4] << ", " << strzal[5] << endl;

for (int i=0; i<6; i++)
{
cout <<“Wylosowane liczby przez komputer to: “<<losowanie <<”\a” << endl;
Sleep(1000);
}

cout << "Zebrane przez Ciebie punkty: " << punkt << endl;

cout<<endl;

system(“pause”);

return 0;
}


(Fizyda) #2

Zamiast losować/podawać liczby w pętli for rób to w pętli do…while. Pseudo kod:

do {
    losuj_liczbe
    if(wylosowana nie jest w wylosowanych) {
        dodaj liczbe do wylosowanych
        zwieksz licznik
    }
} while (licznik < 6)

Przy czym sprawdzanie czy jest w wylosowanych robisz w pętli for.