2012-01-05 8 views
-3

프로젝트 오일러의 문제 9에서 무한 루프가 발생했습니다. 여기 프로젝트 오일러 009 문제

내 코드입니다 :이 글을 쓰는 바보 도움이되었습니다 모두의

#include <iostream> 
#include <cmath> 

bool isPythagorean(int a, int b, int c); 

int main(){ 
     int a; 
     int aa; 
     int b; 
     int bb; 
     int c; 

     for(a = 0; a <= 1000; a++){    /*a loop*/ 
       aa = a; 
       for(b = aa; b <= 1000; b++){  /*b loop*/ 
         bb = b; 
         for(c = bb; c <= 1000; c++){ 
           if(isPythagorean(a,b,c)){ 
             if(a + b + c == 1000){ 
               std::cout << (a * b) * c; 
               return 0; 
             } 
           else 
             continue; 
           } 





       } 




     } 

     return 1; 
} 
bool isPythagorean(int a, int b, int c){ 
     int Pa = (int) pow(a, 2); 
     int Pb = (int) pow(b, 2); 
     int Pc = (int) pow(c, 2); 
     if(a < b && b < c){ 
         if(Pa + Pb == Pc) 
           return true; 
         else 
           return false;  
     } 

     else 
       return false; 
} 

의례, 코드가 변경되었습니다,하지만 오류가 여전히 유효하지 :

코드가 실행

, 아무것도 단자로 출력된다. 아무도 나에게 여기에서 잘못되고있는 것이 무엇인지 친절하게 말해 줄 수 있습니까?

(나는 그런 바보입니다;. 내 덕분에 심지어이보고 모든 사람으로 이동)

코드의 나쁜 조각의 전체 호스트를 몰래 들어, istrandjev을 주셔서 감사합니다.

바보 같은 오류를 발견 한 Blastfurnace에게 감사드립니다.

+0

http://stackoverflow.com/editing-help#code – SLaks

+0

StackOverflow는 공유에 관한 것으로, 답변을 얻지 못했습니다 (실제로 ... 경쟁에서 당신을 돕는 것). 그런 다음 커뮤니티에서 답변을 제거합니다. –

+0

그래서, 나는 그걸 사용해서는 안되니? SLAKs에 감사드립니다! – Bajinga

답변

0

나는 당신이 적용하려고하는 논리를 많이 얻지 못합니다. 어떤 % 1 == 0 & & b % 1 == 0 & c % 1 == 0 확인 하시겠습니까? 사실이라면 간단히 작성할 수 있습니다. 사이클이 끝나기도 언제입니까? 조건 중 하나가> c이고 그 다음에 * a + b * b == c * c를 원한다면 삼중 항이 피타고라스 인 방법은 무엇입니까?

+0

각각 하나가 정수인지 확인해야했습니다. 사이클은 대답을 찾았을 때 끝날 것입니다.하지만 물어 보니 나는 단지 1000으로 제한 할 수 있습니다. > c is silly. 죄송합니다. 고맙습니다. – Bajinga