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

Code blocks nie chce wczytać pliku txt.

Object Storage Arubacloud
0 głosów
442 wizyt
pytanie zadane 5 lipca 2021 w C i C++ przez Bubucziks Nowicjusz (220 p.)

Witam serdecznie,

Zacząłem kurs c++ Pana Mirosława kilka dni temu. Obecnie jestem przy odc nr 7 i mam mały problem. Podczas próby uruchomienia quizu wyrzuca mi komunikat iż program quiz przestał działać. Nie jestem w stanie wyszukać w moim kodzie jakiegoś błędu który zapewne popełniłem dlatego zwracam się o was z prośbą o pomoc i wytłumaczenie co zrobiłem nie tak.

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

using namespace std;

string tresc;
string autor;
string pytanie[5];
string odpA[5], odpB[5], odpC[5], odpD[5];
string poprawna[5];
string odpowiedz;

int punkty=0;

int main()
{
    int nr_lini=1;
    string linia;
    int nr_pytania;

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

    if (plik.good()==false)
    {
        cout << "Nie istnieje taki plik";
        exit(0);
    }
    while (getline(plik, linia))
    {
        switch (nr_lini)
        {
            case 1: tresc = linia;                    break;
            case 2: autor = linia;                    break;
            case 3: pytanie[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_lini==8) {nr_lini=2; nr_pytania++;}
        nr_lini++;
    }
    plik.close();

    for (int i=0; i<=4; i++)
    {
        cout <<endl   << pytanie[i]   <<endl;
        cout << "A. " << odpA[i]      <<endl;
        cout << "B. " << odpB[i]      <<endl;
        cout << "C. " << odpC[i]      <<endl;
        cout << "D. " << odpD[i]      <<endl;

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

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

        if (odpowiedz==poprawna[i])
        {
            cout << "Brawo odpowiedz jest poprawna zdobywasz punkt" <<endl;
            punkty++;
        }
        else
        {
            cout << "To zla odpowiedz" <<endl;
        }
    }
    cout << "Koniec Quizu" <<endl << "Zdobyles: " << punkty << " punktow.";
    return 0;
}


A tutaj plik .txt ktory znajduje sie w folderze z programem:

Quiz na temat Wlacy Pierscieni.
Bubucziks
Ilu bylo czlonkow druzyny pierscienia
3
6
9
7
c
Gdzie zginal Boromir
W Minas Tirith
Na Amon Hen
W Mordorze
W Edoras
b
Kto zniszczyl Pierscien
Frodo
Gandalf
Sam
Goluum
d
Ile powstalo filmow o Wladcy Pierscieni
3
4
3
2
a
Ile lat mial Bilbo odchodzac z Shire
99
100
111
121
c
 

1 odpowiedź

0 głosów
odpowiedź 5 lipca 2021 przez Radfler VIP (101,030 p.)

Zmienna `nr_pytania` z linii 22 nie jest zainicjowana, przez co mamy niezidentyfikowane zachowanie w programie. Przypisz jej wartość 0, to błąd zniknie:

int nr_pytania = 0;

 

komentarz 5 lipca 2021 przez NewEraOfPeace Gaduła (4,790 p.)
Nie "niezidentyfikowane", a "niezdefiniowane"
komentarz 8 lipca 2021 przez Bubucziks Nowicjusz (220 p.)

@Radfler, Dziękuje za pomoc. Program działa jednak jest jeszcze jeden mały problem. Nie wyświetla mi pierwszej i drugiej linijki z notatnika a od razu przechodzi do 1 pytania. Czym może to być spowodowane??

komentarz 9 lipca 2021 przez Radfler VIP (101,030 p.)

Tym, że nigdzie nie dałeś instrukcji wyświetlających te dwie linie. Dodaj (np. w linii 49):

cout << tresc << '\n'; // wyświetlanie treści
cout << autor << '\n'; // wyświetlanie autora

 

Podobne pytania

0 głosów
3 odpowiedzi 708 wizyt
pytanie zadane 3 października 2015 w C i C++ przez Ditrix Mądrala (5,650 p.)
0 głosów
0 odpowiedzi 386 wizyt
0 głosów
0 odpowiedzi 180 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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!

...