该程序接受用户输入的一些基本棒球统计数据,并执行一些操作,最终输出一个复杂的统计数据。虽然我们才刚开始学习函数,但我第一次尝试用函数做这个程序,失败得很惨。我认为该程序可以在没有功能的情况下执行,到目前为止,这是我的代码:
(发布系统拒绝让我在 #include < 之后输入任何内容,但我使用的是 iostream、iomanip、conio.h 和 cmath。)
using namespace std;
int main()
{
int H, TB, BB, HBP, AB, YEAR, LGRS, LGPA;
double REqA, EqR, RA, WIN, AEqA, LGEqA, aWIN;
cout << "Enter the player's at bats." << endl;
cin >> AB;
cout << "Enter the player's hits." << endl;
cin >> H;
cout << "Enter the player's total bases." << endl;
cin >> TB;
cout << "Enter the player's walks." << endl;
cin >> BB;
cout << "Enter the player's times hit by pitch." << endl;
cin >> HBP;
cout << "Enter the year the player played." << endl;
cin >> YEAR;
if (YEAR != 2012)
{
cout << "Sorry, this program only supports the 2012 season." << endl;
}
else
{
LGRS = 21017;
LGPA = 184179;
LGEqA = 0.72401;
}
REqA = (H + TB + (1.5 * (BB + HBP))) / (AB + BB + HBP);
EqR = (2 * REqA / LGEqA - 1) * (AB + BB + HBP) * (LGRS / LGPA);
WIN = (EqR * EqR) / ((EqR * EqR) + (RA * RA));
aWIN = (WIN / (1 - WIN));
AEqA = pow(aWIN, 0.2) * 0.26;
cout << "The player had a " << AEqA << " EqA in " << YEAR << "." << endl;
getch();
return 0;
}
AEqA 的最终输出始终为 0,无论一开始输入什么数字。如果我将程序设置为输出 REqA,则程序正在输出它应该输出的数字。但是我需要为 AEqA 的最终输出执行之后的所有步骤,并且最终结果总是为零。我认为问题在于计算 EqR 的行,因为如果我设置程序输出 EqR,输出也始终为 0。