Accelerated C++の練習に問題があります。次のように 主な機能は次のとおりC++の問題を加速する - 関数を呼び出す関数
int main()
{
// students who did and didn't do all their homework
vector<Student_info> did, didnt;
// read the student records and partition them
Student_info student;
while (read(cin, student)) {
if (did_all_hw(student))
did.push_back(student);
else
didnt.push_back(student);
}
// verify that the analyses will show us something
if (did.empty()) {
cout << "No student did all the homework!" << endl;
return 1;
}
if (didnt.empty()) {
cout << "Every student did all the homework!" << endl;
return 1;
}
// do the analyses
write_analysis(cout, "median", median_analysis, did, didnt);
write_analysis(cout, "average", average_analysis, did, didnt);
write_analysis(cout, "median of homework turned in",
optimistic_median_analysis, did, didnt);
return 0;
}
機能write_analysisは、5つのパラメータ、その第三の、分析をとる関数です。次のように
書き込み分析は次のとおりです。
void write_analysis(ostream& out, const string& name,
double analysis(const vector<Student_info>&),
const vector<Student_info>& did,
const vector<Student_info>& didnt)
{
out << name << ": median(did) = " << analysis(did) <<
", median(didnt) = " << analysis(didnt) << endl;
}
質問は楽観中央値であり、optimistic_median呼び出すための解析関数を記述するために読者を尋ねる:
double optimistic_median(const Student_info& s)
{
vector<double> nonzero;
remove_copy(s.homework.begin(), s.homework.end(),
back_inserter(nonzero), 0);
if (nonzero.empty())
return grade(s.midterm, s.final, 0);
else
return grade(s.midterm, s.final, median(nonzero));
}
その後、おそらく、1を得ることができますwrite_analysis関数が動作するようになっています。これは私のためにはないようです。 私は試しました
double analysis(const Student_info& s)
{
optimistic_median(s);
}
しかし、それは動作しません。 誰でも手伝っていただけますか?
4つのスペースをインデントすることで、コードの書式を正しく設定できます。 –
将来は、コードスニペットを強調表示してCtrl + Kキーを押すか、エディタで '{}'ボタンを押すことでコードスニペットをフォーマットしてください。 – birryree
「動作しません」と定義します。それは何をしますか、あなたは何を期待していますか? –