查找最接近另一个值的值

时间:2016-06-13 04:38:19

标签: 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;

举个例子,让我们说所有学生的平均成绩是7.1。 我的任务是找到最接近该值的单个学生的最近成绩。让我们说约翰的平均成绩是7.2,吉姆有7.4,迈克尔有8.1。我需要找到一种方法来找到学生之间平均成绩的最接近的值并打印他们的详细信息。如果多个学生最接近,我只需要找一个学生。

2 个答案:

答案 0 :(得分:4)

首先假设第一个学生是最接近的学生。

然后,通过除第一个以外的所有学生。如果该学生比目前的学生更接近,请将当前最佳状态切换为该学生。

当你完成后,你认为最好的学生将是最好的学生。

所以:

1)创建两个变量,一个跟踪我们认为最好的学生,称为&#34; current_best&#34;并且跟踪该学生接近平均值的那个,称为&#34; current_diff&#34;。

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

3)循环所有学生,但第一个。对于每个学生,检查该学生是否比current_diff更接近平均值。如果是这样,请将current_best设置为该学生,将current_diff设置为该学生与平均值的差异。

4)current_best表示分数最接近平均值的学生。

请注意,不会处理关系。

答案 1 :(得分:0)

你试过这个吗? 在计算平均成绩后,运行一个循环,找出每个学生的个人平均成绩与平均成绩之间的绝对差异。 存储具有学生索引和绝对差异的2D数组。 然后根据绝对差异对数组进行排序。挑出相应的学生ID。