(c+;+;)返回和函数输出之间的某个地方出错 您好,我的C++程序(勾股定理)中有一个问题,我的值返回到函数,用CUT获得输出。< /P>

(c+;+;)返回和函数输出之间的某个地方出错 您好,我的C++程序(勾股定理)中有一个问题,我的值返回到函数,用CUT获得输出。< /P>,c++,calculator,C++,Calculator,例如,如果我将a设置为3,b设置为0,c设置为2,则在运行程序并查看变量时,输出为0或nan。以下是有关变量的更多信息: pyth_b_1-(错误)在当前上下文中不可用!p_t()-(错误){float(float,float,float)}0x4014ad 代码: 根据你的代码,当a==3,b==0,c==2时,我们得到:pyth_c=pow(2,2)-pow(3,2),得到什么。你不能取那个负数的平方根(至少是实数)。在案例1中,如果cb,那么pyth\u c将是负数。然后试着取它的平方根。

例如,如果我将
a
设置为3,
b
设置为0,
c
设置为2,则在运行程序并查看变量时,输出为0或nan。以下是有关变量的更多信息:

pyth_b_1-(错误)在当前上下文中不可用!p_t()-(错误){float(float,float,float)}0x4014ad

代码:


根据你的代码,当a==3,b==0,c==2时,我们得到:
pyth_c=pow(2,2)-pow(3,2)
,得到什么。你不能取那个负数的平方根(至少是实数)。

在案例1中,如果
c
b
,那么
pyth\u c
将是负数。然后试着取它的平方根。其他情况也一样。除了案例3缺少平方根调用之外。这是一个学习如何使用调试器的完美程序。我建议学习使用调试器。这将使您的编程工作更加轻松。非常感谢。我重写了代码,只允许正数,如果不允许,重新启动程序。再次感谢。
cout<<"Set one value 0 to get answer for that variable \n";
        cout<<"Enter number or 0 for 'a': ";
        cin>>a;
        cout<<"Enter number or 0 for 'b': ";
        cin>>b;
        cout<<"Enter number or 0 for 'c': ";
        cin>>c;
        cout<<"You'r answer = "<<p_t(a, b, c)<<endl;
float p_t(float a,float b,float c){

    if(a == 0 && b != 0 && c != 0){
    // 0 equals nothing for parameters
    cout<<"You chose to find a"<<endl;
    float pyth_c = (pow(c, 2)) - (pow(b, 2));
    float pyth_a  = sqrt(pyth_c);
    return pyth_a;
    }
    else if(a != 0 && b == 0 && c != 0){
    float pyth_c_1 = (pow(c, 2)) - (pow(a, 2));
    float pyth_b_1 = sqrt(pyth_c_1);
    return pyth_b_1;
    }
    else if(a != 0 && b != 0 && c == 0){
    float pyth_a_2 = (pow(a, 2)) - (pow(b, 2));
    return pyth_a_2;
    }

    }