所以我想计算在四场自行车比赛中谁拥有最多的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文件中数据的结构:
例如巴黎鲁拜“ Greg VAN AVERMAET” 32 BMC BEL 1 5:41:07
例如巴黎鲁拜“ 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];
};
最佳答案
您为什么不向结构添加计数器呢?
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
}
}
您将其计数,然后在完成数学运算后比较所有计数器
所以看看谁的最高。