Dzień dobry
Mam problem z zadaniem domowym i nie chodzi tutaj sticte o jego rozwiązanie,a pytanie dotyczące kompilatora. Jestem na początku swojej drogi w programowaniu i odkąd to robię używam do pisania kodu Visual Studio Code na ubuntu. Program to quiz, który przyznaje punkt za poprawna odpowiedz. Podczas oglądania lekcji z programowania obiekotwego zadaniem widza jest do napisanego kodu dodać linie, które spowodują że program bedzie rozpoznawal poprawną odpowiedź podaną z klawiatury zarówno z małych jak i duzych liter. Problem polega na tym, że kod na Windowsie dokładnie w CodeBlocks działa poprawnie, jednak ten sam kod na ubuntu (VSC) przyznaje tylko jeden punkt w ostatniej odpowiedź jeżeli była poprawna. We wcześniejszych pytaniach program przynaje 0 punktów mimo udzielonej poprawnej odpowiedźi. Moje pytanie brzmi jak powinien wyglądać kod na linuxie w VSC i dlaczego program inaczej działa na różnych kompilatorach mimo bardzo prostego kodu. Poniżej załączam kod źródłowy. Pozdrawiam
Plik pytanie.cpp
#include <iostream>
#include "pytanie.h"
#include <fstream>
#include <cstdlib>
using namespace std;
void Pytanie::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 Pytanie::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 Pytanie::sprawdz()
{
duza=odpowiedz;
for ( unsigned long i = 0; i < 1; i++ ){ // zadanie dodatkowe
duza[i]+=0x20;
}
//std::cout<<duza<<std::endl;
if(odpowiedz==poprawna||duza==poprawna)
{
punkt=1;
}
else punkt=0;
//std::cout<<punkt<<std::endl;
}
/*void Pytanie::zliczaj(int n){
if(odpowiedz==poprawna||duza==poprawna){
n++;
}
else{
n+=0;
}
cout<<n<<endl;
}
*/
Plik pytanie.h
#include <iostream>
using namespace std;
class Pytanie
{
public:
string tresc;
string a,b,c,d;
int nr_pytania;
string poprawna;
string odpowiedz;
int punkt;
string duza;
void wczytaj(); //wczytuje pytania z pliku
void zadaj(); //pokazuje pytanie, czyta odpowiedz
void sprawdz(); //sprawdza poprawnosc odpowiedzi
//void zliczaj(int n);
};
Plik main.cpp
#include <iostream>
#include "pytanie.h"
using namespace std;
int main()
{ int suma=0;
Pytanie p[5];
for(int i=0; i<=4; i++)
{
p[i].nr_pytania=i+1;
p[i].wczytaj();
p[i].zadaj();
p[i].sprawdz();
suma=suma+p[i].punkt;
//p[i].zliczaj(0);
}
cout<<"KONIEC QUIZU! PUNKTY = "<<suma<<std::endl;
return 0;
}
Dołączam również treść quizu w .txt
Pozdrawiam