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

Problem z tworzeniem quizu

Ostatnio zmodyfikowano 2016-10-22 16:37
Autor Wiadomość
venzi
Temat założony przez niniejszego użytkownika
Problem z tworzeniem quizu
» 2016-10-22 14:17:35
Witam mam problem z tworzeniem quizu  jestem poczatkujacy w programowaniu dlatego nie moge zauwazyc bledow jakie popelnilem wiec zwracam sie tutaj o pomoc
Ponizej wklejam kod:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <string>


using namespace std;

string temat, nick;
string tresc[5];
string odpa[5], odpb[5], odpc[5], odpd[5];
string poprawodp[5];
string odpowiedz;
string punkty;


int main()
{
    int nrlinii=1;
    string linia;
    int nrpyt;

    fstream kliz;
    kliz.open("quiz.txt",ios::in);

    if (kliz.good()==false)
    {
        cout<<"Nie udalo sie otworzyc pliku!";
        exit(0);
    }

    while(getline(kliz,linia))
        {
            switch (nrlinii)
            {
            case 1: temat=linia;                break;
            case 2: nick=linia;                 break;
            case 3: tresc[nrpyt] = linia;       break;
            case 4: odpa[nrpyt] = linia;        break;
            case 5: odpb[nrpyt] = linia;        break;
            case 6: odpc[nrpyt] = linia;        break;
            case 7: odpd[nrpyt] = linia;        break;
            case 8: poprawodp[nrpyt] = linia;   break;
            }
        }

        if (nrlinii=8) {nrlinii=2; nrpyt++;}
        nrlinii++;
    }

    kliz.close();

    for (int i=0; i<=4; i++)
    {
        cout<<endl<<tresc<<endl;
        cout<<"A. "<<odpa<<endl;
        cout<<"B. "<<odpb<<endl;
        cout<<"C. "<<odpc<<endl;
        cout<<"D. "<<odpd<<endl;

        cout<<"Twoja odpowiedz: ";
        cin>>odpowiedz;

        transform(odpowiedz.begin(),odpowiedz.end,odpowiedz.begin(), ::tolower);

        if (odpowiedz==poprawodp)
        {
            cout<<"Brawo! Odpowiedz poprawna"<<endl;
            punkty++;
        }   else cout<<"Zle! Poprawna odpowiedz: ">>poprawodp<<endl;
    }

    cout<<"Koniec quizu, zdobyte punkty: "<<punkty;

    return 0;
}


A tutaj Build Log:
-------------- Build: Debug in quiz (compiler: GNU GCC Compiler)---------------

mingw32-g++.exe -Wall -fexceptions -g  -c D:\CodeBlocks\PROGAMAJSTER\quiz\main.cpp -o obj\Debug\main.o
D:\CodeBlocks\PROGAMAJSTER\quiz\main.cpp: In function 'int main()':
D:\CodeBlocks\PROGAMAJSTER\quiz\main.cpp:48:22: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
         if (nrlinii=8) {nrlinii=2; nrpyt++;}
                      ^
D:\CodeBlocks\PROGAMAJSTER\quiz\main.cpp: At global scope:
D:\CodeBlocks\PROGAMAJSTER\quiz\main.cpp:52:5: error: 'kliz' does not name a type
     kliz.close();
     ^
D:\CodeBlocks\PROGAMAJSTER\quiz\main.cpp:54:5: error: expected unqualified-id before 'for'
     for (int i=0; i<=4; i++)
     ^
D:\CodeBlocks\PROGAMAJSTER\quiz\main.cpp:54:19: error: 'i' does not name a type
     for (int i=0; i<=4; i++)
                   ^
D:\CodeBlocks\PROGAMAJSTER\quiz\main.cpp:54:25: error: 'i' does not name a type
     for (int i=0; i<=4; i++)
                         ^
D:\CodeBlocks\PROGAMAJSTER\quiz\main.cpp:74:5: error: 'cout' does not name a type
     cout<<"Koniec quizu, zdobyte punkty: "<<punkty;
     ^
D:\CodeBlocks\PROGAMAJSTER\quiz\main.cpp:76:5: error: expected unqualified-id before 'return'
     return 0;
     ^
D:\CodeBlocks\PROGAMAJSTER\quiz\main.cpp:77:1: error: expected declaration before '}' token
 }
 ^
P-152748
skovv
» 2016-10-22 14:53:36
C/C++
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <string>


using namespace std;

string temat, nick;
string tresc[ 5 ];
string odpa[ 5 ], odpb[ 5 ], odpc[ 5 ], odpd[ 5 ];
string poprawodp[ 5 ];
string odpowiedz;
int punkty;

fstream kliz;

int main()
{
    int nrlinii = 1;
    string linia;
    int nrpyt = 0;
   
    kliz.open( "quiz.txt", ios::in );
   
    if( kliz.good() == false )
    {
        cout << "Nie udalo sie otworzyc pliku!";
        exit( 0 );
    }
   
    while( getline( kliz, linia ) )
    {
        switch( nrlinii )
        {
        case 1: temat = linia; break;
        case 2: nick = linia; break;
        case 3: tresc[ nrpyt ] = linia; break;
        case 4: odpa[ nrpyt ] = linia; break;
        case 5: odpb[ nrpyt ] = linia; break;
        case 6: odpc[ nrpyt ] = linia; break;
        case 7: odpd[ nrpyt ] = linia; break;
        case 8: poprawodp[ nrpyt ] = linia; break;
        }
    }
   
    if( nrlinii == 8 ) { nrlinii = 2; nrpyt++; }
    nrlinii++;
   
    for( int i = 0; i <= 4; i++ )
    {
        cout << endl << tresc << endl;
        cout << "A. " << odpa << endl;
        cout << "B. " << odpb << endl;
        cout << "C. " << odpc << endl;
        cout << "D. " << odpd << endl;
       
        cout << "Twoja odpowiedz: ";
        cin >> odpowiedz;
       
        // popraw sam ;)
        //transform(odpowiedz.begin(), odpowiedz.end, odpowiedz.begin(), ::tolower);
       
        if( odpowiedz == poprawodp[ i ] )
        {
            cout << "Brawo! Odpowiedz poprawna" << endl;
            punkty++;
        }
        else cout << "Zle! Poprawna odpowiedz: " << poprawodp << endl;
       
    }
   
    cout << "Koniec quizu, zdobyte punkty: " << punkty;
    kliz.close();
    return 0;
}

Ogółem strasznie :D "punkty" dałeś jako string, pakujesz dane do tablic o indeksie "nrpyt" choć jest on NULL'em, w warunkach zamiast sprawdzać - ustalasz wartość zmiennej.. i trochę innych. Ten kod się skompiluje, ale działać niezbyt powinien. Na Twoim miejscu napisałbym to zupełnie od nowa myśląc kolejno co chcę zrobić. Pierw napisz wczytywanie pliku.. wczytuje? Super. Teraz "pakowanie" danych z pliku do tablic. Działa, wyświetlają się, jest git... i tak dalej.
P-152751
carlosmay
» 2016-10-22 15:12:19
Zrezygnuj z globalnych zmiennych i tablic.
Podziel kod na funkcje. Tak łatwiej ogarniesz bałagan.
Korzystaj z debugera.
P-152752
venzi
Temat założony przez niniejszego użytkownika
» 2016-10-22 15:25:44
Jestem poczatkujacy ucze sie niecale 2 tygodnie wiele mi sie myli. Wiem że jest strasznie, powoli pisze to od poczatku
P-152755
skovv
» 2016-10-22 16:37:45
Najważniejsze to czytać komunikaty które "wysrywa" często masowo debugger, często z braku ';' lub z nadmiaru '}' jak było u Ciebie :] Pamiętaj, najważniejsze na początku to rozumować nad tym jak co zrobić, najlepiej robić to po małym kroczku i sprawdzać czy działa poprawnie( cout << ... << endl). Powodzenia!
P-152759
« 1 »
  Strona 1 z 1