各レコードの名前、年齢、GPAを含むテキストファイルがあります。私はファイルの平均gpa(クラス全体)を計算する関数getgpaを作成しました。問題は、field1(name)、field2(age)およびfield3(gpa)を抽出すると、クラス全体の平均gpaを簡単に計算できることです。しかし、フィールド3のみを抽出しようとすると、結果はありません。各レコードのfield3(gpa)のみをどのように抽出できますか?私の抽出機能はすぐ下にあります。私はDev-C++を使用しています。あなたの助けは非常に高く評価されます。ありがとう。ファイルから各レコードのフィールドを1つだけ抽出する必要がありますが、機能しません。
int student::getgpa()
{
double field3, gpa; double sumGPA=0; int count=0;
string field1; int field2;
char line[256];
cout<<"call of the function 'getgpa' " <<endl;
ifstream IS ("student.dat", ios::in);
while (!IS.eof())
{
if(IS>>field1>>field2>>field3) //where the problem is!
{
sumGPA=sumGPA+field3;
count++;
}
}
IS.close();
if (count>0) //just to make sur not to divide by zero!!
cout<<"gpa of the students:" <<sumGPA/count<<endl;
}
'if(IS >> field1 >> field2 >> field3)//問題がどこにあるのですか?あなたは3つのフィールドをすべて抽出すると言っています。問題はどこですか? –
私は 'IS >> field1 >> field2 >> field3'をwhileループに移動することは' eof'を基にするよりもうまくいくと考えています。 http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.5 – chris
を参照してくださいif(IS >> field1 >>)の代わりに(IS >> field3)フィールド2 >>フィールド3)。私はクラスの全体的なGPAを計算するためにfield3しか必要ないからです。だから私は3つのフィールドすべてを抽出するのではなく、計算に必要なものだけを抽出したいと思う。しかし、私はそうしても機能しません。 – T4000