Witam pisze quiz na iformatyke i jako pomoc uzywam Quizu z odcinka 7 Pana Zelenta. Jednak ja mam miec w swoim quizie 20 pytan. I teraz rodzi sie problem z odczytem: dla np 14 pytan dziala, a juz dla 20 wyskakuje blad. Czy jest to spowodowane ograniczona iloscia pamieci dla zmiennych string ? probowalem zrobic kilka zmiennych przechowujacych linie tekstu ale nadal nie dziala a moze program nie jest w stanie odczytac 120 lini tesktu. Nie moglem znalezc odpowiedzi na to pytanie wiec pytam. Pomocy :)
#include <iostream> #include <fstream> // biblioteka zawierajaca funkcje odnosnie plikow #include <cstdlib> #include <string> using namespace std; string pytanie[20], a[20], b[20], c[20], d[20], dobra_odpowiedz[20] ; int nr_pytania=0; int main() { fstream quiz ; // tworzenie zmiennje plikowej quiz.open("pytania.txt", ios::in); // wczytywanie pliku do programu if(quiz.good()==false) // sprawdzanie czy plik istnieje { cout << "Umieść plik pytania.txt w folderze z aplikacja. albo go stworz"; exit(0) ; } string linia; // zmienna do ktorej zapiszemy pobrana linie z funkcji getline int ktora_linia=1; // zmienna pomagajaca dzialac switchowi while(!quiz.eof()) // funkcja pobierajaca cala linie z tekstu dopoki nie spotka ENTERA funkcja wykonuje // sie dopoki funckaj znajduje w pliku linie gdy linie sie skoncza petla tez sie skonczy { getline(quiz, linia); switch(ktora_linia) { case 1: pytanie[nr_pytania]=linia ; break; case 2: a[nr_pytania]=linia ; break; case 3: b[nr_pytania]=linia ; break; case 4: c[nr_pytania]=linia ; break; case 5: d[nr_pytania]=linia ; break; case 6: dobra_odpowiedz[nr_pytania]=linia ; break; } if(ktora_linia==6) { ktora_linia=0; nr_pytania=nr_pytania+1; } ktora_linia++; } quiz.close(); for(int i=0; i<20 ; i++) { cout << "pytanie "<< i+1 <<"."<< pytanie[i] << endl; cout << "A."<< a[i] << endl ; cout << "B."<< b[i] << endl ; cout << "C."<< c[i] << endl; cout << "D."<< d[i] << endl ; } return 0; }
wiecej kodu nie pisalem bo skoro tyle mi nie dziala to po co to konczyc