2016-11-23 1 views
-2

a*a+b*b=n*n과 같은 양수 인 ab이있는 경우 true를 반환하는 프로그램을 만들고 싶습니다.합계가 true/false 함수 인 경우

내 코드는 다음과 같습니다

bool c(int n){ 
    int b=1; 
    int a=1; 
    for (a=1; a<=n; a++) { 
     for (b=a; b<=n; b++) { 
      if (a*a + b*b == n*n) { 
       return true; 
      else 
       return false; 
     } 
    } 

} 

그러나이 코드는 내가 그것을에 원하는 반환하지 않습니다. 그 문제를 해결하려면 어떻게해야합니까?

투표하기 전에 모두들이 질문에 개선 될 수있는 점을 설명해주십시오. 나는 때때로 사람들이 아무런 설명도없이 투표 질문을 내리는 경향이 있음을 알아 챘다.

+0

조건이 참이 아니면 어떻게됩니까? 그 때 무엇을 돌려 주나요? –

+1

1 단계 - 모든 코드 경로에서 함수를 반환합니다. 2 단계 - 디버거를 사용합니다. 또한 'c'는 어디에 정의되어 있습니까? –

+0

2 단계 - 변수'n'을 사용하십시오. –

답변

2

프로그램이 컴파일되지 않습니다. 다음과 같이 작성하려고했습니다.

bool c(int n) { 
    int b = 1; 
    int a = 1; 
    for (a = 1; a <= n; a++) { 
    for (b = a; b <= n; b++) { 
     if (a*a + b*b == n*n) 
     return true; 
     else 
     return false; 
    } 
    } 
} 

컴파일 중이지만 잘못되었습니다.

하지만 당신은 아마이 원하는 :

bool myfunction(int n) { 
    int b = 1; 
    int a = 1; 
    for (a = 1; a <= n; a++) { 
    for (b = a; b <= n; b++) { 
     if (a*a + b*b == n*n) 
     return true; 
    } 
    } 

    return false; 
} 

int main() { 
    if (myfunction(5)) { 
    printf("myfunction(5) returned true\n"); 
    } 
} 
2
bool c(int n){ 
int b=1; 
int a=1; 
for (a=1; a<=n; a++) { 
    for (b=a; b<=n; b++) { 
     if (a*a + b*b == n*n) { 
      return true; 
     else 
      return false; 
    } 
} 
} 

당신은 = 1, B = 1를 확인합니다 작성한 코드 및 1 + 1은 2

같음에 그 평가 그래서 코드가하는 모든 것은 2와 n을 비교합니다.

return false 문은 for 루프 외부에 있어야합니다. 이것은 a와 b의 모든 조합에 대해 a + b b = n * n이되는 쌍 (a, b)이 없음을 의미합니다.