2012-01-05 55 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