我正在进行测验,我想从txt
文件中加载问题和答案。
当我运行此程序时,即使我选择了正确的答案,也表明它不正确。
例如,第一个答案应为“c”,第二个答案应为“d”。
我将部分文字改为英文,但我认为从上下文来看,一切都是可以理解的。
#include <iostream>
#include <fstream> //bibl your_answerialna za zapis (od file)
#include <cstdlib>
#include <algorithm>
#include <string>
using namespace std;
string topic, nick;
string quest[5], odpA[5], odpB[5], odpC[5], odpD[5], correct[5];
string your_answer;
int punkty=0;
int main()
{
string linia;
int nr_linii=1;
int nr_pytania=0;
fstream plik; //zmienna plikowa tj nazwa pliku w kodzie zrodlowym + jej nazwa, moze byc ich wiele w programie
plik.open("quiz.txt", ios::in); //funcka otwarcia zmiennej plik (nazwa pliku , tryb otwarcia), ios:in tj wprowadz do programu
if(plik.good()==false) //funkcji z bibl fstrem sprawdzajaca czy plik istnieje
{
cout<<"nie ma takiego pliku";
exit(0); //zakonczenie programu z bibl <cstdlib>
}
while(getline(plik, linia)) //pobieramy linie do "linia"
{
switch(nr_linii)
{
case 1: topic=linia; break;
case 2: nick=linia; break;
case 3: quest[nr_pytania] = linia; break;
case 4: odpA[nr_pytania] = linia; break;
case 5: odpB[nr_pytania] = linia; break;
case 6: odpC[nr_pytania] = linia; break;
case 7: odpD[nr_pytania] = linia; break;
case 8: correct[nr_pytania] = linia; break;
}
if(nr_linii==8) {
nr_linii=2;
nr_pytania++;
} //gdy program zczyta linie 8, wracamy do 8, i zwiekszamy nr pytania zapisujac jedo bibliotek
nr_linii++;
}
plik.close(); //funkca zamykajaca
for(int i=0; i<=4; i++)
{
cout<<"your_answer on question"<<endl;
cout<<quest[i]<<endl;
cout<<"A "<<odpA[i]<<endl;
cout<<"B "<<odpB[i]<<endl;
cout<<"C "<<odpC[i]<<endl;
cout<<"D "<<odpD[i]<<endl;
cout<<"twoja odp";
cin>>your_answer;
transform(your_answer.begin(), your_answer.end(), your_answer.begin(), ::tolower); //zamian duzych liter na male
if (your_answer==correct[i])
{
cout<<"Dobrze! Zdobywasz punkt!"<<endl;
punkty++;
}
else
cout<<"Fail, no point, correct answer is: "<<correct[i]<<endl;
}
cout<<"Koniec quizu. Zdobyte punkty: "<<punkty;
return 0;
}
我要加载的here's the text file。
答案 0 :(得分:0)
的变化:
代码现在识别正确的答案。如果你仍然有麻烦,请告诉我S.Grzejnik
#include <iostream>
#include <fstream> //bibl your_answerialna za zapis (od file)
#include <cstdlib>
#include <algorithm>
#include <string>
using namespace std;
string topic, nick;
string parts[5][5]; //5 questions and 5 string parts to each one
char correct[5];
char your_answer;
int punkty=0;
int main()
{
string linia;
ifstream plik; //zmienna plikowa tj nazwa pliku w kodzie zrodlowym + jej nazwa, moze byc ich wiele w programie
plik.open("quiz.txt"); //funcka otwarcia zmiennej plik (nazwa pliku , tryb otwarcia), ios:in tj wprowadz do programu
if(plik) //funkcji z bibl fstrem sprawdzajaca czy plik istnieje
{
getline(plik, topic);
getline(plik, nick);
for(int pytanie = 0; pytanie < 5; pytanie++) {
getline(plik, linia);
for(int nr_linia = 0; nr_linia < 5; nr_linia++) {
parts[pytanie][nr_linia] = linia;
getline(plik, linia);
}
correct[pytanie] = linia[0];
}
plik.close(); //funkca zamykajaca
for(int pytanie = 0; pytanie < 5; pytanie++)
{
cout<<"your_answer on pytanieuestion"<<endl;
cout<<parts[pytanie][0]<<endl;
cout<<"A "<<parts[pytanie][1]<<endl;
cout<<"B "<<parts[pytanie][2]<<endl;
cout<<"C "<<parts[pytanie][3]<<endl;
cout<<"D "<<parts[pytanie][4]<<endl;
cout<<"twoja odp: ";
cin>>your_answer;
if (tolower(your_answer)==correct[pytanie])
{
cout<<"Dobrze! Zdobywasz punkt!"<<endl;
punkty++;
}
else
{
cout<<"Fail, no point, correct answer is: "<<correct[pytanie]<<endl;
}
}
cout<<"Koniec quizu. Zdobyte punkty: "<<punkty<<endl;
}
else
{
cout<<"nie ma takiego pliku"<<endl;
exit(0); //zakonczenie programu z bibl <cstdlib>
}
return 0;
}