Resuelvo el problema 9 en el Project Euler. En mi solución, uso una declaración "goto" para salir de dos bucles for. El problema es el siguiente:¿Está utilizando goto una forma legítima de romper dos bucles?
un triplete de Pitágoras es un conjunto de tres números naturales, por abc que,
a^2 + b^2 = c^2
Por ejemplo, 3^2 + 4^2 = 9 + 16 = 25 = 52.
Existe exactamente un triplete pitagórico para el cual a + b + c = 1000. Encuentre el producto abc.
Mi solución es en C++:
int a,b,c;
const int sum = 1000;
int result = -1;
for (a = 1; a<sum; a++){
for (b = 1; b < sum; b++){
c = sum-a-b;
if (a*a+b*b == c*c){
result = a*b*c;
goto found;
}
}
}
found:
std::cout << "a:" << a << std::endl;
std::cout << "b:" << b << std::endl;
std::cout << "c:" << c << std::endl;
std::cout <<"Result:" << result << std::endl;
Dado que las declaraciones "Ir a" no son muy populares entre los programadores de C++, me gustaría saber, si esto podría ser considerado un uso razonable de "Goto" . O si hay una solución mejor para el problema que no necesita "goto". Con esto no me refiero a una solución que simplemente evite "goto", pero que evite "goto" de una manera que mejore el algoritmo.
me encantan las pestañas de 8 espacios que estás usando .... muy sexy. –
gracias, me gustan también :-) – Lucas
Con una pestaña de 16 espacios en el medio ... –