Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Nieuruchamianie quizu w grze.

Ostatnio zmodyfikowano 2016-02-15 18:47
Autor Wiadomość
Pawlo3
Temat założony przez niniejszego użytkownika
Nieuruchamianie quizu w grze.
» 2016-02-15 17:39:48
Witam. Mam problem, ponieważ program, który ma uruchamiać quizy nie uruchamia żadnego quizu.
Oto kod:
C/C++
#include <std>
#include <fstream>
class Pytanie
{
public:
    string pytanie;
    string odpowiedzi[ 4 ];
    int poprawna;
};
int main( int argc, char * argv[] )
{
    int poprawne = 0;
    int wszystkie = 0;
    string temat;
    temat = "";
    int licz_lin = 1;
    ifstream plik_quizu;
    plik_quizu.open( "warszawa.quiz" );
    getline( plik_quizu, temat );
    licz_lin++;
    cout << temat << '\n';
    Pytanie aktualne;
   
    for( NULL; 1; NULL )
    {
        /*
        Pobieranie danych z pliku i odpowiedzi od użytkownika.
        */
        getline( plik_quizu, aktualne.pytanie );
        licz_lin++;
        for( int i = 0; i < 4; i++ )
        {
            getline( plik_quizu, aktualne.odpowiedzi[ i ] );
            licz_lin++;
        }
        string tymcz;
        getline( plik_quizu, tymcz );
        licz_lin++;
        aktualne.poprawna = atoi( tymcz.c_str() );
        if( aktualne.pytanie == "" )
             break;
       
        wszystkie++;
        cout << aktualne.pytanie << "\n";
        for( int i = 0; i < 4; i++ )
        {
            cout <<( i + 1 ) << ") " << aktualne.odpowiedzi[ i ] << '\n';
        }
        int pop = 0;
        cin >> pop;
        if( pop == aktualne.poprawna )
             poprawne++;
       
    }
    cout << "Quiz zakonczony!\n";
    cout << "Zdobyles " << poprawne << " poprawnych odpowiedzi.\n";
    cout << "Mogles zdobyc " << wszystkie << " poprawnych odpowiedzi.\n";
    /*
    Obliczanie procentow i oceny.
    */
    int proc =( poprawne / wszystkie * 100 );
    int ocena = 0;
    if( proc < 30 )
         ocena = 1;
    else if( proc < 50 )
         ocena = 2;
    else if( proc < 75 )
         ocena = 3;
    else if( proc < 91 )
         ocena = 4;
    else if( proc <= 100 )
         ocena = 5;
   
    cout << "Twoja ocena to: " << ocena << '\n';
    cout << "Zdobyles " << proc << " procent!\n";
}

Wiem, wiem nie ukrywałem danych i nie szyfrowałem pliku. Nie 'trujcie' mi o tym, tylko powiedzcie, co tu może być źle i jak to poprawić.

Struktura pliku quizu to:

[temat quizu]
[pytanie1]
[odpowiedz1]
[odpowiedz2]
[odpowiedz3]
[odpowiedz4]
[nr-poprawnej-odpowiedzi-w-pytaniu-1]
[pytanie 2]
...


// EDIT: <std> to nagłowek inkludujący standardowe nagłówki, stworzony przeze mnie.
P-144906
mateczek
» 2016-02-15 18:47:52
U mnie działa. No może poza zrąbanymi nagłówkami. Ja bym zrobił jednak wyjście zaraz po odczytaniu pustej linijki w pliku (A skoro tak to powinna ta pusta linijka być)
C/C++
//nagłówki
#include <iostream>
#include <fstream>
using namespace std;

for(;; )
{
    /*
            Pobieranie danych z pliku i odpowiedzi od użytkownika.
            */
    getline( plik_quizu, aktualne.pytanie );
    if( aktualne.pytanie == "" )
         break;
P-144910
« 1 »
  Strona 1 z 1