Witam, mam problem z wyodrębnieniem prawidłowej odpowiedzi w quizie. Odpowiedzi są wyświetlane pseudo losowo i nie wiem co zrobić aby uzyskać tą poprawną odpowiedź, która w funkcji Pytanie::sprawdz przyczyniłaby się do przyznania punktu. Zaznaczę jeszcze, że zmienna "poprawna" była potrzebna jak odpowiedzi jeszcze nie były losowe, teraz są i poprawna odpowiedź nie znajduje się już w pliku txt. Kod zamieszczam poniżej.
(pytania.cpp)
#include <iostream>
#include "pytania.h"
#include <fstream>
#include <cstdlib>
#include <string>
#include <time.h>
using namespace std;
void Pytanie::wczytaj()
{
ifstream plik;
plik.open("pytania.txt", ios::in);
if (plik.good() == false)
{
cout << "Nie udalo sie otworzyc pliku!";
exit(0);
}
int nr_linii = (nr_pytania - 1) * 5 + 1;
int aktualny_nr = 1;
string linia;
while (getline(plik, linia))
{
if (aktualny_nr == nr_linii) tresc = linia;
if (aktualny_nr == nr_linii + 1) a = linia;
if (aktualny_nr == nr_linii + 2) b = linia;
if (aktualny_nr == nr_linii + 3) c = linia;
if (aktualny_nr == nr_linii + 4) d = linia;
//if (aktualny_nr == nr_linii + 5) poprawna = linia;
aktualny_nr++;
}
plik.close();
}
void Pytanie::zadaj()
{
srand(time(NULL));
int rnd = rand() % 22;
cout << endl << tresc << endl;
for (int i = 0; i < 4; i++)
{
int tablica = tabVariantAnswer[rnd][i];
if (i == 0)
{
cout << "A: ";
}
else if (i == 1)
{
cout << "B: ";
}
else if (i == 2)
{
cout << "C: ";
}
else if (i == 3)
{
cout << "D: ";
}
if (tablica == 0)
{
cout << a << endl;
}
else if (tablica == 1)
{
cout << b << endl;
}
else if (tablica == 2)
{
cout << c << endl;
}
else if (tablica == 3)
{
cout << d << endl;
}
}
cout << "-=-=-=-=-=-=-=-=-=-=-" << endl;
cout << "Wpisz (np: A,B,C,D)" << endl;
cout << endl << "Odpowiedz: " << endl;
cin >> odpowiedz;
int secondIndex;
if (odpowiedz == "A") {
secondIndex = 0;
}
else if (odpowiedz == "B") {
secondIndex = 1;
}
else if (odpowiedz == "C") {
secondIndex = 2;
}
else if (odpowiedz == "D") {
secondIndex = 3;
}
secondIndex = tabVariantAnswer[rnd][secondIndex];
if (secondIndex == 0) {
odpowiedz == "A";
}
else if (secondIndex == 1) {
odpowiedz == "B";
}
else if (secondIndex == 2) {
odpowiedz == "C";
}
else if (secondIndex == 3) {
odpowiedz == "D";
}
int odp = tabVariantAnswer[rnd][secondIndex];
if (odp == 0)
{
odpowiedz = "A";
}
if (odp == 1)
{
odpowiedz = "B";
}
if (odp == 2)
{
odpowiedz = "C";
}
if (odp == 3)
{
odpowiedz = "D";
}
}
void Pytanie::sprawdz()
{
if (odpowiedz == poprawna)
{
punkt = 1;
cout << "Poprawna odpowiedz!" << endl;
}
else
{
punkt = 0;
cout << "Niestety, odpowiedz niepoprawna" << endl;
}
}
(pytania.h)
#include <iostream>
using namespace std;
class Pytanie
{
public:
string tresc;
string a, b, c, d;
int nr_pytania;
string poprawna;
string odpowiedz;
int punkt;
int tabVariantAnswer[22][4] = {
{0, 1, 2, 3},
{0, 1, 3, 2},
{0, 2, 1, 3},
{0, 2, 3, 1},
{0, 3, 1, 2},
{0, 3, 2, 1},
{1, 0, 2, 3},
{1, 0, 3, 2},
{1, 2, 0, 3},
{1, 2, 3, 0},
{2, 0, 1, 3},
{2, 0, 3, 1},
{2, 1, 0, 3},
{2, 1, 3, 0},
{2, 3, 1, 0},
{2, 3, 0, 1},
{3, 0, 1, 2},
{3, 0, 2, 1},
{3, 1, 0, 2},
{3, 1, 2, 0},
{3, 2, 0, 1},
{3, 2, 1, 0}
};
void wczytaj();
void zadaj();
void sprawdz();
};