简体   繁体   English

功能应该是正确的,但是为什么这里最后的output 0 呢?

[英]Functions should be correct, but why is the final output 0 here?

#include <iostream>
#include <iomanip>
using namespace std;

//Power function
float power (float base, int exp)
{
    if (exp < 0)
    {
        if (base == 0)
            {
                cout << "Base cannot be 0.";
                return -1;
            }
    }

    if (exp == 0)
        return 1;

    if (exp == 1)
        return base;

    return base * power (base, exp - 1);
}

//Factorial function
int facto (int n)
{
    return n <= 0 ? 1 : n * facto (n - 1);
}

//Cos function
float cosCalc (float rad)
{
    float cos = 0;

    int x;
    for (x = 0; x < 10; x++)
        {
            cos += power (-1, x) * power (rad, 2 * x) / facto (2 * x);
        }

    return cos;
}

//Sin function
float sinCalc (float rad)
{
    float sin = 0;

    int x;
    for (x = 0; x < 10; x++)
        {
            sin += power (-1, x) * power (rad, 2 * x + 1) / facto (2 * x + 1);
        }

    return sin;
}

//Main function
int main()
{
    int choice;

    //Title and Menu
    cout << endl << "==============" << endl << " TRIGONOMETRY " << endl << "==============";
    cout << endl << "Select:";
    cout << endl << "1. Calculate Cos and Sin";
    cout << endl << "9. Exit";

    while (true)
    {
        //User Prompt
        cout << endl << endl << "Please enter your choice. => ";
        cin >> choice;
        
        if (choice == 1)
            {
                int angle, anglePh;
                float rad;
                float pi = 3.14159265358979323846264338327950288419716;
                char angleType;
                float cos = 0;
                float sin = 0;

                cout << endl << "Please enter an angle. => ";
                cin >> angle;
                anglePh = angle;
                angle %= 360;
                rad = angle * pi / 180;
                cout << anglePh << " degrees = " << rad << " radian";
                cout << endl << "Calculating Cos...";
                cosCalc (rad);
                cout << endl << "Cos = " << fixed << cos;
                cout << endl << "Calculating Sin...";
                sinCalc (rad);
                cout << endl << "Sin = " << fixed << sin;
            }
        
        if (choice == 9)
            {
                break;
            }
    }
    
}

I am building a program that calculates Sin and Cos off an angle input, and when I run it, it outputs 0.000000 for both Sin and Cos. I suspect there is something to do with me declaring float cos = 0 and float sin = 0 in the if loop for choice == 1, and I tried messing around with it but it either results in the program straight out giving me errors on launch, or I get the same outputs.我正在构建一个根据角度输入计算 Sin 和 Cos 的程序,当我运行它时,它会为 Sin 和 Cos 输出 0.000000。我怀疑这与我声明 float cos = 0 和 float sin = 0 in选择 == 1 的 if 循环,我试着弄乱它,但它要么导致程序直接在启动时给我错误,要么我得到相同的输出。

Any idea where I went wrong?知道我哪里出错了吗?

Thanks for your insight in advance, cheers!提前感谢您的洞察力,干杯!

Your cosin and sine function return a float, but in order to get that result you still have to store it in a variable.您的余弦和正弦 function 返回一个浮点数,但为了获得该结果,您仍然必须将其存储在一个变量中。

So instead of:所以而不是:

cosCalc (rad);

Do:做:

rad = cosCalc (rad);

and the same for your sine function.对于您的正弦 function 也是如此。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM