• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Quiz w c++ problem z wyodrębnieniem poprawnej odpowiedzi

Aruba Cloud - Virtual Private Server VPS
+1 głos
194 wizyt
pytanie zadane 3 czerwca 2020 w C i C++ przez wojownikseo Początkujący (260 p.)

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();
};

 

1 odpowiedź

+1 głos
odpowiedź 4 czerwca 2020 przez pinguu Użytkownik (500 p.)
wybrane 5 czerwca 2020 przez wojownikseo
 
Najlepsza
1. 105 linia w poleceniach po if masz ==  

2. 32 linia masz if jako komentarz

Podobne pytania

0 głosów
1 odpowiedź 697 wizyt
pytanie zadane 5 listopada 2015 w C i C++ przez damiang Nowicjusz (160 p.)
0 głosów
1 odpowiedź 380 wizyt
pytanie zadane 28 sierpnia 2016 w C i C++ przez N21 Początkujący (290 p.)
0 głosów
1 odpowiedź 195 wizyt
pytanie zadane 6 kwietnia 2021 w PHP przez xrodus Nowicjusz (120 p.)

93,327 zapytań

142,325 odpowiedzi

322,396 komentarzy

62,657 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...