ďťż

Ładny brzuch

W pliku mam zapisane dane w ten sposób

pytanie
odpA
odpB
odpC
odpD
prawidlowa_odpowiedz
wartosc pytania
wartosc tue albo false
pytanie2
odpA
odpB
odpC
odpD
prawidlowa_odpowiedz
wartosc pytania
wartosc tue albo false
...

i czcę to wszystko wczytać do programu, mam taki kod i jak to jakoś uprościć? nie mam żadnego doświadczenia w operacjach na plikach... void wczytajPytania() { ifstream plik; char linia[256]; plik.open("pytania.txt"); for(int i = 0; i < 16; ++i) { plik.getline(linia,200); //pobranie pytania pytanie[i].strTresc = static_cast<string>(linia); plik.getline(linia,200); //pobranie odpA pytanie[i].strOdp[0] = static_cast<string>(linia); plik.getline(linia,200); //pobranie odpB pytanie[i].strOdp[1] = static_cast<string>(linia); plik.getline(linia,200); //pobranie odpC pytanie[i].strOdp[2] = static_cast<string>(linia); plik.getline(linia,200); //pobranie odpD pytanie[i].strOdp[3] = static_cast<string>(linia); plik.getline(linia,200); //pobranie prawidlowej odpowiedzi pytanie[i].prawidlowaOdp = static_cast<ODPOWIEDZ>(linia); plik.getline(linia,200); //pobranie wartosci pytanie[i].wartosc = static_cast<int>(linia); plik.getline(linia,200); //pobranie czy gwarantowana pytanie[i].gwarantowana = static_cast<bool>(linia); } plik.close(); }



Dołóż dodatkową pętlę:
for(int i = 0; i < 16; ++i)
{
//(...)
for(int pytanie = 0; pytanie < 4; ++pytanie)
{
plik.getline(linia,200);
pytanie[i].strOdp[pytanie] = linia;
}
plik.getline(linia,200); //pobranie prawidlowej odpowiedzi
pytanie[i].prawidlowaOdp = atoi(linia);
//(...)
}
Odpowiedzi na pytania wczytuj w dodatkowej pętli - skoro trzymasz je w tablicy, to możesz napisać pętlę po index'ie tablicy. A liczby wczytuj, używając funkcji atoi() do przerobienia char[] na int. bool sprawdź za pomocą stricmp(), czy tekst brzmi "true" - jeśli nie, to przypisujesz false. Najlepiej zapisać to sobie jako osobną funkcję ;).

A, i o ile nic się nie zmieniło w standardzie, to do zamiany char[] na std::string nie potrzeba używać static_cast'a ;). Trochę też oczyści kod.

Wydaje mi się, że żeby ten kod jeszcze jakoś oczyścić, to musiałbyś przebudować całą architekturę programu.
Pozdrawiam,
TeMPOraL.
moje rozwiązanie nie jest może za ambitne, ale chwilowo biorę sobie wolne od ambitnych rozwiązań...
Użytkownik TeMPOraL edytował ten post 21 styczeń 2007, 21:36
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •