2012-01-05 2 views
-3

В проблеме Project Euler 9 у меня возникает проблема: бесконечные петли.Project Euler 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

Итак, я не должен был с этим справиться? Спасибо, СЛАКС! – Bajinga

ответ

0

Я не получаю большую часть логики, которую вы пытаетесь применить. Что такое% 1 == 0 & & b% 1 == 0 & c% 1 == 0 проверка? Вы можете просто написать это, если (правда), вы знаете. Также, когда цикл должен заканчиваться? Как триплет должен быть пифагорейским, если одно из условий -> c, а затем вы хотите иметь a * a + b * b == c * c?

+0

Я должен был проверить, является ли каждый из целых чисел. Цикл должен заканчиваться, когда ответ найден ... Но, как вы просили, я могу просто ограничить его до 1000 a> c глупо. Сожалею. Спасибо, хотя. – Bajinga