以 C 为单位的百分比计算



我正在尝试计算一个百分比来计算主队获胜次数,但当我知道我除以的值是正确的时,我会继续收到 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);

希望对:)有帮助(

最新更新