問題の説明は次のとおりです。
あなたの学校の歴史の先生は、真/偽のテストを採点するのに助けが必要です。学生のIDとテストの回答はファイルに保存されます。ファイルの最初のエントリには、テストへの回答が次の形式で含まれています。
TFFTFFTTTTFFTFTFTFTT
ファイル内の他のすべてのエントリは、学生ID、空白、学生の回答の順になります。たとえば、次のエントリがあります。
ABC54301 TFTFTFTT TFTFTFFTTFT
学生IDがABC54301であり、質問1の回答がTrue、質問2の回答がFalseなどであることを示します。この生徒は質問9に答えませんでした。試験には20の質問があり、クラスには150人以上の生徒がいます。正解ごとに2ポイントが与えられ、間違った答えごとに1ポイントが差し引かれ、ゼロポイントが与えられる答えはありません。テストデータを処理するプログラムを作成します。出力は、学生のID、回答、テストスコア、テストグレードの順になります。次のグレードスケールを想定します:90%〜100%、A; 80%〜89.99%、B; 70%〜79.99%、C; 60%〜69.99%、D; および0%〜59.99%、F。
これは私が作ったプログラムです:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
//declaring variables
ifstream file("grading.txt");
char key[21];
char id[9];
char student[21];
int score = 0, i;
//initializing arrays
for(i=0; i<21; i++)
{
key[i]=0;
student[i]=0;
}
for(i=0; i<9; i++)
id[i]=0;
//processing the key
file >> key;
file.ignore(100, "\n");
//processing student grades
while(file.good())
{
file >> id;
file.ignore();
getline(file, student);
file.ignore(100, "\n");
//comparing key and student answer
for(i=0; i<21; i++)
{
if(strcmp(student[i], key[i])
score += 2;
else
score -= 1;
}
//outputing student id, score and grade
cout << "Student ID: " << id;
cout << "Score: " << score;
score = (score/(40))*100;
if(score >= 90 && score <= 100)
cout << "Grade: A" << endl << endl;
else if(score >= 80 && score <= 89.99)
cout << "Grade: B" << endl << endl;
else if(score >= 70 && score <= 79.99)
cout << "Grade: C" << endl << endl;
else if(score >= 60 && score <= 69.99)
cout << "Grade: D" << endl << endl;
else if(score >= 0 && score <= 59.99)
cout << "Grade: F" << endl << endl;
else
cout << "Invalid percentage" << endl;
}
//closing file
file.close();
return 0;
}
次のコンパイルエラーが発生しているようです:http://pastebin.com/r0Y1xX8M(ここでエラーを適切に編集できませんでした。申し訳ありません)
コンパイルエラー、およびこれを解決する方法に関するその他の提案について、ヘルプをいただければ幸いです。