Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';我无法使我的方程式正常工作_C++ - Fatal编程技术网

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
在哪里

这就解释了为什么你会得到错误的结果


你需要什么