• 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

Object Storage Arubacloud
+1 głos
148 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ź 623 wizyt
pytanie zadane 5 listopada 2015 w C i C++ przez damiang Nowicjusz (160 p.)
0 głosów
1 odpowiedź 223 wizyt
pytanie zadane 28 sierpnia 2016 w C i C++ przez N21 Początkujący (290 p.)
0 głosów
1 odpowiedź 147 wizyt
pytanie zadane 6 kwietnia 2021 w PHP przez xrodus Nowicjusz (120 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,962 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...