我在Hangman游戏中使用了一个结构,该结构中用户根据不正确的尝试次数获得分数。
我的问题是如何对它们进行排名,同时考虑点数(pontos)和游戏数(n_jogos)。
例如:
到目前为止,我已经尝试过:
实现qsort(),但是由于我不太了解它,因此无法使其正常工作。
实现冒泡排序,该冒泡排序只能按游戏数进行排序,而不能同时按游戏数和分数进行排序。
任何帮助都会非常感激,谢谢。
答案 0 :(得分:3)
拥有10分且只玩过一次的用户应该排在拥有15分且玩过2场游戏的用户之前。
那么,是否要先按游戏数排名,然后再按积分排名?我假设是,但是如果不是,那么您必须确定订购标准。您可以将此函数传递给 qsort (3)。调味季节。
typedef struct {
char nome[50], password[50];
int pontos, n_jogos;
} Utilizador;
int cmp ( const void *A, const void *B ) {
const Utilizador *a=A, *b=B;
if( a->jogos == b->jogos) {
if( a->pontos == b-pontos ) return 0;
return a->pontos < b-pontos? -1 : 1;
}
return a->jogos < b->jogos? -1 : 1;
}
答案 1 :(得分:0)
您可以创建一个排名:
double userRank = (double)pontos / (double)n_jogos;
然后只需使用乘数对这两个变量进行加权即可调整排名系统。
按用户等级排序。