坚持计算DNF的最高发生率

时间:2018-02-04 13:40:27

标签: c arrays struct

所以我想算一下在四场自行车比赛中谁拥有最多的DNF。 我只完成了过滤和打印未完成的车手。 但由于我对数组相对较新,我在编写逻辑时遇到了问题:

仅打印四场比赛中DNF最多的骑手。

这是我的循环,用于返回所有DNF骑手,因此有些名称是重复的:

  int i;

  for(i = 0; i < 790; i++){
    if(strcmp(results[i].rider_placement, "DNF") == 0) {
      printf(" %-40s \n",
      results[i].rider_name);
    }
  }

我知道这可能不是足够的信息,但是现在任何有助于我思考的事情都会受到赞赏。

编辑:澄清DNF是从比赛中退役的车手

这是用于存储来自txt文件的数据的结构:

离。 ParisRoubaix“Greg VAN AVERMAET”32 BMC BEL 1 5:41:07

离。 ParisRoubaix“Sam BEWLEY”30 ORS NZL DNF 0

struct result_t {
char stage_name[STAGE_LEN];
char rider_name[NAME_LEN];
int  rider_age;
char rider_team[TEAM_LEN];
char rider_nation[NATION_LEN];
char rider_placement[NATION_LEN];
char time[TIME_LEN];
};

1 个答案:

答案 0 :(得分:0)

为什么不在你的结构中添加一个计数器?

struct result_t {
    char stage_name[STAGE_LEN];
    .
    .
    int counter = 0;
}

每当此人收到DNF时,就像你提供的循环一样

for(i = 0; i < 790; i++){
    if(strcmp(results[i].rider_placement, "DNF") == 0) {
        printf(" %-40s \n",
        results[i].rider_name);
        results[i].counter += 1;  //<-- pref. impl counter
    }
}

你算上来,数学完成后,你比较所有的计数器 那么看看谁有最高的......?