计算平均分数组

时间:2014-12-26 03:56:24

标签: c

我有一个数组,其中每个元素都是关于学生的符号:

group number | name | evaluations
---------------------------------
4272 Галкин Г. А. 5445
4273 Константинопольский А. А. 4333
4273 Курочкин А. А. 3433
4272 Козлов И. И. 4443

我需要计算每组的平均分数,即在这种情况下获得两个数字:

  • (5 + 4 + 4 + 5) + (4 + 4 + 4 + 3) = 33 / 2 = 16.5
  • (4 + 3 + 3 + 3) + (3 + 4 + 3 + 3) = 26 / 2 = 13

因此,在输出中我应该得到:4272 -- 16.54273 -- 13。请告诉我,我该怎么做。

我的功能目前如下:

void group_average_scope() {
  char name[50];
  int group;
  int exam;

  for (int i = 0; i < 4; i++) {
    int sum_of_evaluations = 0;
    int digit = 0;
    int counter_digits = 0;

    sscanf(student_list[i], "%d %[^0-9] %d", &group, name, &exam);

    while (exam > 0) {
      digit = exam % 10;
      sum_of_evaluations += digit;
      counter_digits++;
      exam = exam / 10;
    }
  }
}

1 个答案:

答案 0 :(得分:3)

试试这样。 (此代码为伪代码。)

#define GROUP_NUM 5000
typedef struct list{
    int group;
    int number_of_students;
    int sum_of_eval;
    list(){group = 0; number_of_students = 0; sum_of_eval = 0;};
};

在此之前,我建立了一个结构来保存组中的信息,学生人数和该组中的评估总和。

char name[50];
  int group;
  int exam;
  list students_group[GROUP_NUM];

  for (int i = 0; i < 4; i++) {
    int sum_of_evaluations = 0;
    int digit = 0;
    int counter_digits = 0;
    sscanf(student_list[i], "%d %[^0-9] %d", &group, name, &exam);

    printf("%d %s %d\n",group,name,exam);//test

    while (exam > 0) {
      digit = exam % 10;
      sum_of_evaluations += digit;
      counter_digits++;
      exam = exam / 10;
    }
    students_group[group].group = group;
    students_group[group].number_of_students++;
    students_group[group].sum_of_eval += sum_of_evaluations;
  }
  for( group = 0 ; group < GROUP_NUM; group++){
    if(students_group[group].group > 0){
        printf("%d -- %g\n",students_group[group].group ,
               (double)students_group[group].sum_of_eval / students_group[group].number_of_students);
    }
  }

我不知道&#39; group&#39;的信息。所以我认为&#39; group&#39;存在0到4999。 只需在此功能中打印平均值。  如果要保存平均值,则必须接收结构指针。  如果您有任何疑问,请发邮件给我。