C++ Can';我无法使我的方程式正常工作
我已经为我的期末考试创建了一个程序,用来计算威尔克斯系数和一些其他的力量提升比赛项目。我无法得到正确输出的方程式。我试着操纵我的括号,但还是卡住了 这就是问题中的等式 和一个可供参考的计算器C++ Can';我无法使我的方程式正常工作,c++,C++,我已经为我的期末考试创建了一个程序,用来计算威尔克斯系数和一些其他的力量提升比赛项目。我无法得到正确输出的方程式。我试着操纵我的括号,但还是卡住了 这就是问题中的等式 和一个可供参考的计算器 while(性别==“女性”) { 卧床; 蹲下; 库特>静升; 总计=长凳+蹲下+静举; 威尔克斯=总体/A_女性+B_女性*(体重)+C_女性*(体重*体重)+D_女性*(体重*体重*体重)+ E_女性*(体重*体重*体重*体重)+F_女性*(体重*体重*体重*体重*体重); 无载提升; 总计=长凳+
while(性别==“女性”)
{
卧床;
蹲下;
库特>静升;
总计=长凳+蹲下+静举;
威尔克斯=总体/A_女性+B_女性*(体重)+C_女性*(体重*体重)+D_女性*(体重*体重*体重)+
E_女性*(体重*体重*体重*体重)+F_女性*(体重*体重*体重*体重*体重);
无载提升;
总计=长凳+蹲下+静举;
威尔克斯=总数/A_男性+B_男性*(体重)+(C_男性)*(体重*体重))+((D_男性)*(体重*体重*体重))+
女大学生*(体重*体重*体重*体重)+(女大学生)*(体重*体重*体重*体重*体重]);
我会的
wilks = total / (A_WOMEN + B_WOMEN * (weight) + C_WOMEN * (weight * weight) + D_WOMEN * (weight * weight * weight) +
E_WOMEN * (weight * weight * weight * weight) + F_WOMEN * (weight * weight * weight * weight * weight));
也就是说,用分母(对于男性和女性)括起来。
wilks = total / (A_WOMEN + B_WOMEN * (weight) + C_WOMEN * (weight * weight) + D_WOMEN * (weight * weight * weight) +
E_WOMEN * (weight * weight * weight * weight) + F_WOMEN * (weight * weight * weight * weight * weight));
也就是说,用分母(()
)括起来。首先,系数在分子中有500,而不是总重量
然后将总提升重量乘以系数,得到某种标准化的提升量
我会写
wilks = 500.0 / (a + weight * (b + weight * (c + weight * (d + weight * (e + weight * f)))));
如果这是你想要的系数。
如果这是你想要的值,乘以总提升重量
旁注:
随机插入括号几乎没有任何好处。
如果你不熟悉不同运算符的优先级-x/a+b
不是x/(a+b)
,而是(x/a)+b
-现在是时候从小学开始翻出你的旧数学书了。首先,系数在分子中有500,而不是总重量
然后将总提升重量乘以系数,得到某种标准化的提升量
我会写
wilks = 500.0 / (a + weight * (b + weight * (c + weight * (d + weight * (e + weight * f)))));
如果这是你想要的系数。
如果这是你想要的值,乘以总提升重量
旁注:
随机插入括号几乎没有任何好处。
如果您不熟悉不同运算符的优先级-x/a+b
不是x/(a+b)
,而是(x/a)+b
-现在是时候翻出你小学时的旧数学书了。这是算法。因为你使用的是实数,所以一定要用double
。我不知道你为什么要用一段时间来表示男性
与女性
。改用if/else语句:
if (gender == "female")
{
cout << "Please use kilograms (KG) for all inputs." << endl;
cout << "Enter your bodyweight: ";
cin >> weight;
cout << "Enter your final bench press attempt: ";
cin >> bench;
cout << "Enter your final squat attempt: ";
cin >> squat;
cout << "Enter your final deadlift attempt: ";
cin >> deadlift;
total = bench + squat + deadlift;
double coeff = 500.0 / ((A_WOMEN) + (B_WOMEN * weight) + (C_WOMEN * square(weight)) + (D_WOMEN * pow(weight, 3)) + (E_WOMEN * pow(weight, 4)) + (F_WOMEN * pow(weight, 5)));
wilks = coeff * total;
cout << wilks;
cout << endl;
}
else // gender == "male")
{
cout << "Please use kilograms (KG) for all inputs." << endl;
cout << "Enter your bodyweight: ";
cin >> weight;
cout << "Enter your final bench press attempt: ";
cin >> bench;
cout << "Enter your final squat attempt: ";
cin >> squat;
cout << "Enter your final deadlift attempt: ";
cin >> deadlift;
total = bench + squat + deadlift;
double coeff = 500.0 / ((A_MEN) + (B_MEN * weight) + (C_MEN * square(weight)) + (D_MEN * pow(weight, 3)) + (E_MEN * pow(weight, 4)) + (F_MEN * pow(weight, 5)));
wilks = coeff * total;
cout << wilks;
cout << endl;
}
if(性别==“女性”)
{
卧床;
蹲下;
库特>静升;
总计=长凳+蹲下+静举;
双系数=500.0/((A_女性)+(B_女性*体重)+(C_女性*平方(体重))+(D_女性*力量(体重,3))+(E_女性*力量(体重,4))+(F_女性*力量(体重,5));
威尔克斯=系数*总数;
无载提升;
总计=长凳+蹲下+静举;
双系数=500.0/((A_人)+(B_人*体重)+(C_人*正方形(体重))+(D_人*力量(重量,3))+(E_人*力量(重量,4))+(F_人*力量(重量,5));
威尔克斯=系数*总数;
cout这是算法。因为你使用的是实数,所以一定要对所有东西都使用double
。我不知道你为什么要对男性
和女性
使用一段时间。请改用if/else语句:
if (gender == "female")
{
cout << "Please use kilograms (KG) for all inputs." << endl;
cout << "Enter your bodyweight: ";
cin >> weight;
cout << "Enter your final bench press attempt: ";
cin >> bench;
cout << "Enter your final squat attempt: ";
cin >> squat;
cout << "Enter your final deadlift attempt: ";
cin >> deadlift;
total = bench + squat + deadlift;
double coeff = 500.0 / ((A_WOMEN) + (B_WOMEN * weight) + (C_WOMEN * square(weight)) + (D_WOMEN * pow(weight, 3)) + (E_WOMEN * pow(weight, 4)) + (F_WOMEN * pow(weight, 5)));
wilks = coeff * total;
cout << wilks;
cout << endl;
}
else // gender == "male")
{
cout << "Please use kilograms (KG) for all inputs." << endl;
cout << "Enter your bodyweight: ";
cin >> weight;
cout << "Enter your final bench press attempt: ";
cin >> bench;
cout << "Enter your final squat attempt: ";
cin >> squat;
cout << "Enter your final deadlift attempt: ";
cin >> deadlift;
total = bench + squat + deadlift;
double coeff = 500.0 / ((A_MEN) + (B_MEN * weight) + (C_MEN * square(weight)) + (D_MEN * pow(weight, 3)) + (E_MEN * pow(weight, 4)) + (F_MEN * pow(weight, 5)));
wilks = coeff * total;
cout << wilks;
cout << endl;
}
if(性别==“女性”)
{
卧床;
蹲下;
库特>静升;
总计=长凳+蹲下+静举;
双系数=500.0/((A_女性)+(B_女性*体重)+(C_女性*平方(体重))+(D_女性*力量(体重,3))+(E_女性*力量(体重,4))+(F_女性*力量(体重,5));
威尔克斯=系数*总数;
无载提升;
总计=长凳+蹲下+静举;
双系数=500.0/((A_人)+(B_人*体重)+(C_人*正方形(体重))+(D_人*力量(重量,3))+(E_人*力量(重量,4))+(F_人*力量(重量,5));
威尔克斯=系数*总数;
cout由于运算符优先级,表达式
total / A_WOMEN +
B_WOMEN * (weight) +
C_WOMEN * (weight * weight) +
D_WOMEN * (weight * weight * weight) +
E_WOMEN * (weight * weight * weight * weight) +
F_WOMEN * (weight * weight * weight * weight * weight);
相当于:
t1 + t2 + t3 + t4 + t5 + t6
在哪里
这就解释了为什么你会得到错误的结果
你需要的是
t1 = A_WOMEN
t2 = B_WOMEN * (weight)
t3 = C_WOMEN * (weight * weight)
t4 = D_WOMEN * (weight * weight * weight)
t5 = E_WOMEN * (weight * weight * weight * weight)
t6 = F_WOMEN * (weight * weight * weight * weight * weight)
den = t1 + t2 + t3 + t4 + t5 + t6
wilks = total/den
编写明确、简单的代码比编写难以理解的长表达式要好
另外,你有相同的代码来接收输入和计算男性和女性的系数。最好创建两个函数——一个用于获取输入,另一个用于计算系数。然后适当地调用函数
// Function to get input from user
std::pair<double, double> getInput()
{
double weight;
double bench;
double squat;
double deadlift;
cout << "Please use kilograms (KG) for all inputs." << endl;
cout << "Enter your bodyweight: ";
cin >> weight;
cout << "Enter your final bench press attempt: ";
cin >> bench;
cout << "Enter your final squat attempt: ";
cin >> squat;
cout << "Enter your final deadlift attempt: ";
cin >> deadlift;
return std::make_pair(weight, bench + squat + deadlift);
}
//使用上述函数并减少重复代码。
std::pair input=getInput();
//“while”没有意义,“if”有意义。
//而(性别=“女性”)
如果(性别=“女性”)
{
wilks=GetWilks系数(input.first,
第二点,
A_妇女,
B_妇女,
C_妇女,
D_妇女,
E_妇女,
F_妇女);
}
//“性别”可以不是男性或女性吗?
//否则,如果(性别=“男性”)
其他的
{
wilks=GetWilks系数(input.first,
第二点,
男人们,
B_MEN,
库曼,
杜门,
尤曼,
(男),;
}
cout由于运算符优先级,表达式
total / A_WOMEN +
B_WOMEN * (weight) +
C_WOMEN * (weight * weight) +
D_WOMEN * (weight * weight * weight) +
E_WOMEN * (weight * weight * weight * weight) +
F_WOMEN * (weight * weight * weight * weight * weight);
相当于:
t1 + t2 + t3 + t4 + t5 + t6
在哪里
这就解释了为什么你会得到错误的结果
你需要什么