• 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
87 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 (20,180 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 (166,180 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ź 82 wizyt
–4 głosów
1 odpowiedź 221 wizyt
pytanie zadane 16 stycznia 2016 w C i C++ przez bergman Obywatel (1,600 p.)

85,805 zapytań

134,588 odpowiedzi

298,787 komentarzy

56,698 pasjonatów

Advent of Code 2021

Top 15 użytkowników

  1. 494p. - rucin93
  2. 463p. - nidomika
  3. 431p. - CC PL
  4. 385p. - Whistleroosh
  5. 379p. - ScriptyChris
  6. 372p. - adrian17
  7. 340p. - TheLukaszNs
  8. 339p. - WhiskeyTaster
  9. 321p. - Argeento
  10. 318p. - Dagohar
  11. 287p. - Anonim 1794483
  12. 281p. - Klaudia
  13. 278p. - B4mbus
  14. 269p. - b0mbix
  15. 246p. - tokox
Szczegóły i pełne wyniki

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.

...