Witam Wszystkich,
Jest to mój pierwszy post więc proszę mi wybaczyć wszelkie błędy :)
Czy ktoś z Was jest w stanie mi pomóc i powiedzieć jak zrobić żeby pobierając z pliku pytanie, a następnie 4 odpowiedzi (1 zawsze jest poprawna) zrobić tak żeby te odpowiedzi wyświetlały się w różnej kolejności ale żeby kompilator "pamiętał", która odpowiedź jest prawidłowa?
Póki co napisałem coś takiego:
Pobieram pytanie i 4 odpowiedzi, a następnie użytkownik wybiera odpowiedź.
W pliku jest w sumie 29 pytań i po 4 odpowiedzi do każdego.
vector<pytanie> gra;
fstream plik;
plik.open("milionerzy.txt", ios::in);
while(! plik.eof())
{
getline(plik, napis);
pytanie wczytane_pytanie;
wczytane_pytanie.przechowuje_pytanie = napis;
for(int i = 0; i < 4; i++)
{
getline(plik, napis);
wczytane_pytanie.przechowane_odpowiedzi[i] = napis;
}
gra.push_back(wczytane_pytanie);
}
vector<pytanie>::iterator itr;
int gramy_dalej;
do
{
srand( (unsigned) time( NULL ) );
int losuj = (( rand() % (gra.size()-1) ) );
cout << "Pytanie numer: " << losuj << endl;
itr = gra.begin();
itr = itr + losuj;
cout << (*itr).przechowuje_pytanie << endl;
for(int i = 0; i < 4; i++)
{
cout << "Odp nr: "<< i+1 << " - " << (*itr).przechowane_odpowiedzi[i] << endl;
}
int odpowiedz;
cout << "\nPodaj odpowiedź: ";
cin >> odpowiedz;
if(odpowiedz == 1)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout << "Dobra odpowiedź" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY);
}
else
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
cout << "Zła odpowiedź" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY);
}
cout << "Gramy dalej ? T -1 / N - Wpisz cokolwiek: ";
cin >> gramy_dalej;
gra.erase(itr);
cout << "Zostało Ci jeszcze: " << gra.size() - 1 << " pytań" << endl << endl;
}while(gramy_dalej == 1);
Pozdrawiam.