私は質問と回答をtxt
ファイルからロードしたいクイズを作りました。クイズは良い答えを承認しません
このプログラムを実行すると、正解を選択したにもかかわらず、正しく表示されません。
たとえば、最初の回答は "c"で、2番目の回答は "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ロードしたい。
あなたの質問は? –
ようこそスタックオーバーフロー!デバッガを使用してコードをステップ実行する方法を学ぶ必要があるようです。良いデバッガを使用すると、プログラムを1行ずつ実行し、どこからずれているかを確認することができます。これはプログラミングをする場合に不可欠なツールです。詳しい読書:** [小さなプログラムをデバッグする方法](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver
私はプログラムが正解。 –