このプログラムは、ユーザーが入力したいくつかの基本的な野球の統計情報を受け取り、いくつかの操作を実行して、最終的に複雑な統計情報を出力します。関数の学習を始めたばかりですが、最初は関数でこのプログラムを実行しようとしましたが、惨めに失敗しました。ただし、プログラムは関数なしで実行できると思います。これまでのコードは次のとおりです。
(投稿システムは、#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 を出力するようにプログラムを設定すると、出力も常に 0 になるため、問題は EqR を計算する行にあると思います。