我正在尝试计算一个百分比来计算主队获胜次数,但当我知道我除以的值是正确的时,我会继续收到 0。
我尝试使用指针值计算它,然后由指针输出百分比,但似乎没有任何效果。
//update function
void update(int * totalGames, int * homeTeamWins, double * homeTeamWinPercentage, int difference) {
*totalGames = *totalGames + 1;
if (difference >= 0)
*homeTeamWins = *homeTeamWins + 1;
homeTeamWinPercentage = (*homeTeamWins / *totalGames);
}
//summary function
void summary(int totalGames, int homeTeamWins, double homeTeamWinPercentage) {
//* homeTeamWinPercentage = (homeTeamWins / totalGames);
printf("n Of the %d total games, %d home teams won, resulting in a %d%.2f%% home team win percentagen", totalGames, homeTeamWins, homeTeamWinPercentage);
}
// in my main
void main() {
...
...
while (!feof(file1)) {
output(homeTeam, visitingTeam, difference);
update(&totalGames, &homeTeamWins, &homeTeamWinPercentage, difference);
}
summary(totalGames, homeTeamWins, homeTeamWinPercentage);
system("pause");
}
在总共 13 场比赛中,有 7 支主队获胜,导致 -8589934600.00% 主队胜率。
我可以说它指向记忆中的某个地方。我已经让它打印 0.00% 的百分比,但这仍然对我没有帮助。
我正在尝试实现主场团队赢/总游戏数 = 主队赢百分比 (7/13=53.18%(,但遇到了麻烦。
问题出在这一行:
主页团队赢百分比 = (*主页球队赢球/*总游戏数(;
表达式(*homeTeamWins / *totalGames);
将执行整数除法并返回一个整数。
而是使用:
((double) *homeTeamWins / (double) *totalGames)
因此,您的更新函数应如下所示:
void update(int * totalGames, int * homeTeamWins, double * eTeamWinPercentage,
int difference)
{
*totalGames = *totalGames + 1;
if (difference >= 0)
*homeTeamWins = *homeTeamWins + 1;
*homeTeamWinPercentage = ((double) *homeTeamWins / (double) *totalGames) * 100;
}
PS:刚刚注意到你用非常奇怪的方式打印输出。 使用以下行,即可正常工作:)
printf("Of %d total Games, %d home teams won, percentage: %0.2f", totalGames, homeTeamWins, percent);
希望对:)有帮助(