Wątek przeniesiony 2018-01-24 01:36 z C/C++ przez kq.

Losowa kolejność pytań w quizie

0

Witam. Mam problem z quizem, chodzi o losowe wyświetlanie się pytań. Czy funkcja rand jest właściwą czy może jakaś inna ? PLS HELP

            while(getline(plik,linia))
    {
        switch(nr_linii)
        {
            case 1: temat=linia;                     break;
            case 2: nick=linia;                      break;
            case 3: tresc[nr_pytania] = linia;       break;
            case 4: odpA[nr_pytania] = linia;        break;
            case 5: odpB[nr_pytania] = linia;        break;
            case 6: odpC[nr_pytania] = linia;        break;
            case 7: odpD[nr_pytania] = linia;        break;
            case 8: poprawna[nr_pytania] = linia;    break;
        }
 
        if (nr_linii==8) {nr_linii=2; nr_pytania++;}
        nr_linii++;
    }

            plik.close();
            for (int i=0; i<=14; i++)
            {
                cout<<endl<<tresc[i]<<endl;
                cout<<"A: "<<odpA[i]<<endl;
                cout<<"B: "<<odpB[i]<<endl;
                cout<<"C: "<<odpC[i]<<endl;
                cout<<"D: "<<odpD[i]<<endl;
                cout<<"Odpowiedz: ";
                cin>>odpowiedz;
                transform(odpowiedz.begin(),odpowiedz.end(),odpowiedz.begin(), ::tolower);

                if (odpowiedz==poprawna[i])
                {
                    cout<<"Zdobywasz punkt"<<endl;
                    gracz.punkty ++;
                }
                else cout<<"Brak punktu"<<endl;

            }

            cout<<endl<<"To koniec, Zdobyte punkty: "<<gracz.punkty;
            Sleep(2000);

            fstream wyniki;
            wyniki.open("wyniki.txt", ios::out | ios::app);
            wyniki<<gracz.pseudonim<<" Punkty: "<<gracz.punkty<<endl;
            wyniki.close();
            wyniki.clear();

            system("cls");
            break;
        }
0

omg. Ten kod wczytujący nadaje się wyłącznie do zaorania i napisania od nowa.

Najłatwiej by było pytania quizowe trzymać jako kontener struktur i po prostu go wymieszać (std::shuffle). Ale jeśli chodzi o minimalną liczbę zmian względem tego kodu to zrób sobie listę indeksów pytań i ją wymieszaj.

0

Poprawiłem ten kod do wczytywania tekstu. Czy z tym dałoby rade coś zrobić ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1