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

Błąd niewykrywalny ludzkim okiem

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
–1 głos
237 wizyt
pytanie zadane 8 stycznia 2020 w C i C++ przez Nabuchadonozor Gaduła (3,120 p.)

Witam wszystkie dobre duszyczki cieplutko, 

mam pewien problem, którym chciałbym się podzielić z Waszymi wydajniejszymi głowami. Otóż poniżej znajduje się kod z odc. 7 (plik tekstowy), jest napisany wręcz idealnie, ale od godziny szukam jakiegokolwiek błędu i nic nie mogę znaleźć, nawet podmieniałem kod miejscami, żeby sprawdzić, o który fragment chodzi, lecz to na próżno...

Liczę, że któryś z Was, ma lepszy wzrok niż ja i żywiłby chęć niesienia pomocy. Błąd pokazuje jako w 60 wersie z opisem - "no match for 'operator>>', jednakże jest to absolutnie niemożliwe.

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <string>

using namespace std;

string temat, nick;
string tresc[5];
string A[5], B[5], C[5], D[5];
string odpowiedz[5], poprawna[5];
int punkty=0;

int main()
{
    fstream file;
    file.open("quiz.txt", ios::in);
    if(file.good()==false)
    {
        cout << "Nie ma takiego programu";
        exit(0);
    }

    int nrlinii=1;
    string linia;
    int nrpyt=0;

    while(getline(file, linia))
    {
        switch(nrlinii)
        {
            case 1: temat = linia; break;
            case 2: nick = linia; break;
            case 3: tresc[nrpyt] = linia; break;
            case 4: A[nrpyt] = linia; break;
            case 5: B[nrpyt] = linia; break;
            case 6: C[nrpyt] = linia; break;
            case 7: D[nrpyt] = linia; break;
            case 8: poprawna[nrpyt] = linia; break;
        }
        if(nrlinii==8)
        {
            nrlinii=2;
            nrpyt++;
        }
    nrlinii++;
    }
    file.close();

    for (int i=0; i<=4; i++)
    {
        cout << endl << tresc[i] << endl;
        cout << "A. " << A[i] << endl;
        cout << "B. " << B[i] << endl;
        cout << "C. " << C[i] << endl;
        cout << "D. " << D[i] << endl;

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

        if(odpowiedz==poprawna[i])
        {
            cout << "Brawo! Otrzymales jeden punkt!" << endl;
            punkty++;
        }
        else cout << "Zle! Brak otrzymanych punktow. Odpowiedz poprawna to " << poprawna[i]<<endl;
    }

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

    cout << "Koniec quizu! Suma otrzymanych punktow wynosi: " << punkty << endl;




    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 8 stycznia 2020 przez DawidK Nałogowiec (37,910 p.)

u Ciebie zmienna odpowiedź jest tablicą stringów:

string odpowiedz[5], poprawna[5];

nie stringiem

cin >> odpowiedz;

 

komentarz 8 stycznia 2020 przez Nabuchadonozor Gaduła (3,120 p.)
Dziękuje z całego serducha!

To chyba przez to, że ostatnio tak mało śpie, bo ostro się wciągnąłem w programowanie, zbyt rozkojarzony jestem. Jeszcze raz, wielkie dzięki!
komentarz 8 stycznia 2020 przez mrspock1 Mądrala (6,420 p.)
Będziesz miał wiele tego rodzaju błędów w przyszłości trudno wykrywalnych w czasie wykonania. Pascal by go zidentyfikował natychmiast w czasie kompilacji.
komentarz 8 stycznia 2020 przez gagyn Stary wyjadacz (11,050 p.)
Tylko, że pascala już prawie nikt nie używa i raczej nikt nie zaleca uczenia się.

Podobne pytania

0 głosów
0 odpowiedzi 378 wizyt
pytanie zadane 30 stycznia 2024 w PHP przez whiteman808 Gaduła (4,760 p.)
0 głosów
4 odpowiedzi 598 wizyt
pytanie zadane 23 października 2018 w Java przez niezalogowany
0 głosów
1 odpowiedź 212 wizyt
pytanie zadane 22 kwietnia 2021 w Sprzęt komputerowy przez Kaion Nowicjusz (140 p.)

93,444 zapytań

142,436 odpowiedzi

322,696 komentarzy

62,805 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

...