21xrx.com
2024-11-22 09:45:57 Friday
登录
文章检索 我的文章 写文章
C++ 实现去掉一个最高分和一个最低分的算法
2023-07-05 02:04:00 深夜i     --     --
C++ 去掉最高分和最低分 算法

在许多应用场景中,我们需要对一组数据进行处理,而在这组数据中有些数据可能会对结果产生不良影响,因此需要排除这些数据。其中经典的一个案例就是从一组学生分数中排除其中一个最高分和一个最低分,从而得到更为准确的平均分。

下面介绍如何用 C++ 实现去掉一个最高分和一个最低分的算法。

首先,我们需要输入学生分数数据,然后计算出其中最高分和最低分。C++ 中可以使用数组来存储分数,在输入分数时依次存储到数组中,然后使用循环查找最高分和最低分。


const int N = 100;

double score[N];

int n;

// 输入分数

cin >> n;

for (int i = 0; i < n; i++) {

  cin >> score[i];

}

// 查找最高分和最低分

double max_score = score[0];

double min_score = score[0];

for (int i = 1; i < n; i++) {

  if (score[i] > max_score) {

    max_score = score[i];

  }

  if (score[i] < min_score) {

    min_score = score[i];

  }

}

计算平均分时,需要去掉最高分和最低分,因此可以分别记录这两个分数在数组中的下标位置,在计算平均分时跳过这两个位置即可。


double sum = 0;

int count = 0;

for (int i = 0; i < n; i++) {

  if (i == max_idx || i == min_idx)

    continue;

  

  sum += score[i];

  count++;

}

double avg_score = sum / count;

最后,将平均分输出即可。


cout << "平均分:" << avg_score << endl;

完整的代码如下:


#include <iostream>

using namespace std;

const int N = 100;

double score[N];

int n;

int main() {

  // 输入分数

  cin >> n;

  for (int i = 0; i < n; i++) {

    cin >> score[i];

  }

  // 查找最高分和最低分

  double max_score = score[0];

  double min_score = score[0];

  int max_idx = 0;

  int min_idx = 0;

  for (int i = 1; i < n; i++) {

    if (score[i] > max_score) {

      max_score = score[i];

      max_idx = i;

    }

    if (score[i] < min_score) {

      min_score = score[i];

      min_idx = i;

    }

  }

  // 计算平均分

  double sum = 0;

  int count = 0;

  for (int i = 0; i < n; i++) {

    if (i == max_idx || i == min_idx)

      continue;

    

    sum += score[i];

    count++;

  }

  double avg_score = sum / count;

  // 输出结果

  cout << "最高分:" << max_score << endl;

  cout << "最低分:" << min_score << endl;

  cout << "平均分:" << avg_score << endl;

  return 0;

}

以上就是 C++ 实现去掉一个最高分和一个最低分的算法的具体介绍和实现方法。这种方法可以应用于其他类似的问题上,例如排除异常数据或统计一组数据的平均值等。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复