尝试使用函数计算有剩余球员的球队数量

Trying to calculate num of teams with leftover players using functions

本文关键字:余球员 函数 计算      更新时间:2023-10-16

我在编写代码时没有遇到任何错误,但一旦编译并运行程序,我就会遇到运行时错误。当试图计算球队和剩余球员的数量时,就会出现错误。我尝试将变量放在不同的部分,但如果去掉printResult函数,似乎一切都正常。除了不能计算之外。

#include <iostream>
using namespace std;
int GetPlayersPerTeam();
int GetTotalPlayersAvailable();
int CalculateNumberOfTeamsAndLeftover(int players, int numTeams, int leftOver, int teamPlayers);
void PrintResults(int numTeams, int leftOver);
int main()
{
int teamPlayers, players, numTeams, leftOver;
teamPlayers = GetPlayersPerTeam();
players = GetTotalPlayersAvailable();
numTeams, leftOver = CalculateNumberOfTeamsAndLeftover(players, numTeams, leftOver, 
teamPlayers);
PrintResults(numTeams, leftOver);
}
int GetPlayersPerTeam()
{
int teamPlayers;
cout << "How many players do you wish per team?" << endl;
cout << "(Enter a value in the range 9 - 15): "; cin >> teamPlayers;
while (teamPlayers < 9 || teamPlayers > 15)
{
cout << "You should have at least 9 but no" << endl;
cout << "more than 15 per team." << endl;
cout << "How many players do you wish per team?: "; cin >> teamPlayers;
}
return teamPlayers;
}
int GetTotalPlayersAvailable()
{
int players;
cout << "How many players are available?: "; cin >> players;
while (players < 1)
{
cout << "Please enter a positive number: "; cin >> players;
}
return players;
}
int CalculateNumberOfTeamsAndLeftover(int players, int numTeams, int leftOver, int teamPlayers)
{
numTeams = players / teamPlayers;
leftOver = players % teamPlayers;
return numTeams;
return leftOver;
}
void PrintResults(int numTeams, int leftOver)
{
cout << "There will be " << numTeams << " teams with ";
cout << leftOver << " players left over.n";
}

是的,函数不能返回2个内容,只能返回1个。一种选择是将numTeams转换为引用,这将允许您在函数体中对其进行修改。

int CalculateNumberOfTeamsAndLeftover(int players, int& numTeams, int leftOver, int teamPlayers)
{
numTeams = players / teamPlayers;
leftOver = players % teamPlayers;
return leftOver;
}

然后当你调用方法时,你可以做:

leftOver = CalculateNumberOfTeamsAndLeftover(players, numTeams, leftOver, 
teamPlayers);

这应该可以解决问题。