2012-01-05 114 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 2012-01-05 15:22:33

+0

StackOverflow是關於共享,沒有得到你的答案(其實......幫助你在競爭中),然後從社區中刪除答案。 – 2012-01-05 15:23:06

+0

那麼,我不應該把它記下來? 謝謝SLaks! – Bajinga 2012-01-05 15:24:40

回答

0

我沒有得到很多你想要應用的邏輯。什麼是%1 == 0 & & b%1 == 0 & c%1 == 0檢查?你知道,如果(真),你可以簡單地寫。此外,週期應該結束嗎?如果其中一個條件是a> c,然後你想要一個* a + b * b == c * c,那麼三聯體是如何被認爲是畢達哥拉斯式的?

+0

我的意思是檢查每一個是否是整數。 當找到答案時,循環意味着結束......但是,正如您所問,我可能會將其限制爲1000 c>是愚蠢的。抱歉。 謝謝你。 – Bajinga 2012-01-05 15:35:45