2017-02-28 3 views
0

안녕하세요, 내 C++ 프로그램 (피타고라스 정리) 어딘가에 함수에 내 값을 반환하고 cout을 사용하여 출력하는 사이에 문제가 있습니다.(C++) 반환과 함수 출력 사이의 어딘가에 오류

예를 들어 a을 3으로 설정하면 b을 0으로, c을 2로 설정하면 프로그램을 실행하고 내 변수를 볼 때 출력이 0 또는 nan이됩니다. 변수에 대한 자세한 정보는 다음과 같습니다.

pyth_b_1 - (오류) 현재 상황에서는 사용할 수 없습니다. p_t() - (오류) {플로트 (플로트, 부동, 플로트)} 0x4014ad

코드 :

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; 
    } 

    } 
+0

'c' <'b' 인 경우 1이면'pyth_c'는 음수가됩니다. 그런 다음 제곱근을 취하려고합니다. 다른 모든 경우에도 동일합니다. 3을 제외하고는 제곱근 호출이 누락되었습니다. 이것은 디버거 사용법을 배우기에 완벽한 프로그램입니다. –

+1

디버거를 사용하는 방법을 배우는 것이 좋습니다. 프로그래밍을 무한히 쉽게 해줍니다. – dandan78

답변

1

글쎄, 당신의 코드에 따라,시 a == 3, b == 0, c == 2, 우리는 다음을 얻습니다 : pyth_c = pow(2, 2) - pow(3, 2), 무엇이 4 - 9 == -5을줍니다. 그 음수의 제곱근을 취할 수 없습니다 (적어도 실수로).

+0

고맙습니다. 양수 만 허용하고 프로그램을 다시 시작하지 않으려면 코드를 다시 작성했습니다. 다시 한번 감사드립니다. – laquishabonquiquithe3rd