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

linux problem z obiektami i odczytem pliku txt

0 głosów
82 wizyt
pytanie zadane 5 października 2020 w C i C++ przez user4132 Nowicjusz (170 p.)

Hej, mam problem dotyczący 2 odc obiektowego c++ (odczyt z pliku quizu za pomocą obiektów). Aktualnie pracuję na linux mint 20. Problem jest taki że program nie liczy prawidłowo punktów spotkałem się z takim rozwiązaniem (odpowiedz[0]==poprawna[0]) i rozwiązuje to problem liczenia tylko że przykładowo cout<<p[0].tresc; w funkcji głównej nie działa poprawnie . Wewnątrz metod też nie dział np cout<<tresc; w metodzie wczytującej .Całość próbowałem kompilować w codeblocks i visual studio z podobnymi rezultatami , nie pomogło też przeniesienie wszystkiego do jednego pliku.

#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

class Pytanie
{
   public:

   string tresc;
   string a,b,c,d;
   int nr_pytania;
   string poprawna;
   string odpowiedz;
   int punkt;

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

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

      int nr_linii=(nr_pytania-1)*6+1;
      int aktualny_nr=1;
      string linia;

      while(getline(plik,linia))
      {
         if(aktualny_nr==nr_linii) tresc=linia;
         if(aktualny_nr==nr_linii+1) a=linia;
         if(aktualny_nr==nr_linii+2) b=linia;
         if(aktualny_nr==nr_linii+3) c=linia;
         if(aktualny_nr==nr_linii+4) d=linia;
         if(aktualny_nr==nr_linii+5) poprawna=linia;
         aktualny_nr++;
      }

      plik.close();

   }

   void zadaj()
   {
      cout<<endl<<tresc<<endl;
      cout<<a<<endl;
      cout<<b<<endl;
      cout<<c<<endl;
      cout<<d<<endl;
      cout<<"------------------------"<<endl;
      cout<<endl<<"Odpowiedz: ";
      cin>>odpowiedz;
   }

   void sprawdz()
   {
      if(odpowiedz==poprawna)
      {
         punkt=1;
      }
      else punkt=0;
   }
};

int main()
{

   Pytanie p[5];
   int suma=0;
   for(int i=0; i<=4; i++)
   {
      p[i].nr_pytania=i+1;
      p[i].wczytaj();
      p[i].zadaj();
      p[i].sprawdz();
      suma+=p[i].punkt;
   }

   cout<<p[0].tresc;
   //w codeblocks wyswietla sie samo"loat przechowuje" w visual studio code wcale

   cout<<"KONIEC QUIZU! PUNKTY = "<<suma;
   return 0;
}

 

komentarz 5 października 2020 przez TOM_CPP Pasjonat (19,260 p.)
Jak wygląda zawartość pliku z którego wczytujesz dane/teksty do pytań? IMHO ułatwił to znalezienie problemu.
1
komentarz 5 października 2020 przez j23 Mędrzec (164,400 p.)
edycja 5 października 2020 przez j23

@user4132,  Niech no zgadnę: plik został zrobiony w Windowsie, gdzie koniec linii to \r\n (w Linuksie to \n). Zacznij od przerobienia pliku tak, by końce linii były w stylu uniksowym:

cat oryginalny-plik.txt | tr -d '\r' > zmodyfikowany-plik.txt

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 79 wizyt
–4 głosów
1 odpowiedź 207 wizyt
pytanie zadane 16 stycznia 2016 w C i C++ przez bergman Obywatel (1,600 p.)
Porady nie od parady
Forum posiada swój własny serwer Discord, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

85,212 zapytań

134,029 odpowiedzi

297,158 komentarzy

56,309 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...