C++ 查找与另一个值最近的值

C++ 查找与另一个值最近的值,c++,C++,我有一个名为Student的班级,我有他们的成绩值和平均成绩值 我需要找到成绩最接近平均水平的学生 我有这个: void close (student s, int n){ int i, sum=0, averageGrade = 1; for(i=0; i<n; i++) sum = sum + s.GetAverage(); averageGrade = sum / n; 无效关闭(学生s,整数n){ int i,总和=0,平均等级=1; 对于(

我有一个名为
Student
的班级,我有他们的成绩值和平均成绩值

我需要找到成绩最接近平均水平的学生

我有这个:

void close (student s, int n){
    int i, sum=0, averageGrade = 1;
    for(i=0; i<n; i++)
       sum = sum + s.GetAverage();
    averageGrade = sum / n;
无效关闭(学生s,整数n){
int i,总和=0,平均等级=1;

对于(i=0;i来说,首先假设第一个学生是最接近的学生

然后,检查除第一个学生以外的所有学生。如果该学生比您当前的最佳成绩更接近,请将您当前的最佳成绩切换到该学生

当你完成时,你认为最好的学生将是真正最好的学生

因此:

1) 创建两个变量,一个跟踪我们认为最好的学生,称为“当前最佳”,另一个跟踪该学生与平均水平的接近程度,称为“当前差异”

2) 将current_best设置为第一个学生,将current_diff设置为第一个学生与平均值的差值

3) 循环检查除第一个学生外的所有学生。对于每个学生,检查该学生是否比当前差异更接近平均值。如果是,将当前差异设置为该学生的最佳值,将当前差异设置为该学生与平均值的差异

4) 当前_最佳值表示得分最接近平均值的学生

请注意,领带是不可处理的。

您尝试过这个吗。 计算平均成绩后,运行循环,查找每个学生的个人平均成绩与平均成绩之间的绝对差异。 存储具有学生索引和绝对差的二维数组。
然后根据绝对差对数组进行排序。选择相应的学生Id。

也许一些数字示例有助于明确您的意思。因此,您计算平均分数,然后您需要找到分数最接近平均值的学生(无论是高于还是低于平均值)?感谢您的回复,我将立即编辑我的帖子。
std::min_element
带有自定义比较器。@LogicStuff,还有其他方法吗?因为在我们大学,我们仍然处于“基本水平”,不希望我们使用susch commandsPerfect,非常感谢,这是我想得到的,但是公共关系etty有点卡住了。谢谢你的回复,但就我的编程知识而言,这听起来有点复杂