Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加速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; } 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; }_C++ - Fatal编程技术网

加速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; } 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; }

加速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; } 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; },c++,C++,但它不起作用。 有人能提供帮助吗?您的分析函数的参数是一个学生,而不是您要传递的向量 我认为您的分析函数应该接受学生的向量,迭代每个学生,并为每个学生调用乐观中位数。无效写入分析(ostream&out,const string&name, void write_analysis(ostream& out, const string& name, double analysis(const vector<Student_info>

但它不起作用。
有人能提供帮助吗?

您的
分析
函数的参数是一个学生,而不是您要传递的
向量

我认为您的分析函数应该接受学生的
向量
,迭代每个学生,并为每个学生调用
乐观中位数

无效写入分析(ostream&out,const string&name,
void write_analysis(ostream& out, const string& name,
                    double analysis(const vector<Student_info>&),
                    const vector<Student_info>& did,
                    const vector<Student_info>& didnt)
双重分析(常数向量&), 常量向量&did, 常量向量(不适用)

一个问题是,这里您试图将函数作为参数传递给函数。您不能这样做--您可以传递指向函数的指针,但不能传递实际函数。

首先,您需要为分析函数使用适当的名称。这将是乐观的中位数分析。接下来,您必须获取对向量的引用,迭代每个项目,并对其应用
optimistic\u median
函数

double optimistic_median_analysis(const vector<Student_info> &v)
{
    return std::accumulate(v.begin(), v.end(), 0.0, optimistic_median) / v.size();
}
双重乐观中值分析(const-vector&v)
{
返回标准::累加(v.begin(),v.end(),0.0,乐观中位数)/v.size();
}

这将给你每个学生的平均值,但从你的问题中不清楚需要什么样的输出。

我正在做练习,这是正确的答案。如本书第110页所述,我们必须“报告各组的中位数”,即乐观中位数组

double optimistic_median_analysis (const vector<Student_info> &s) {
    vector<double> optgrades;
    transform(s.begin(), s.end(), back_inserter(optgrades), optimistic_median);
    return median(optgrades);
}
双重乐观中值分析(const-vector&s){
矢量光电倍增管;
变换(s.begin()、s.end()、back_插入器(optgrades)、乐观中位数);
返回中值(optgrades);
}

您可以通过将代码缩进四个空格来正确格式化代码。以后,请通过突出显示代码段并按Ctrl+K,或点击编辑器中的
{}
按钮来格式化代码段。定义“不工作”。与你的期望相比,它有什么作用?嗨,@SteveH,公认的答案是完全错误的。我的是对的。请重新考虑。干杯
double optimistic_median_analysis(const vector<Student_info> &v)
{
    return std::accumulate(v.begin(), v.end(), 0.0, optimistic_median) / v.size();
}
double optimistic_median_analysis (const vector<Student_info> &s) {
    vector<double> optgrades;
    transform(s.begin(), s.end(), back_inserter(optgrades), optimistic_median);
    return median(optgrades);
}