所以我想算一下在四场自行车比赛中谁拥有最多的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];
};
答案 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
}
}
你算上来,数学完成后,你比较所有的计数器 那么看看谁有最高的......?