Sto risolvendo il problema 9 su Project Euler. Nella mia soluzione uso una dichiarazione "goto" per uscire da due cicli. Il problema è il seguente:sta usando goto un modo legittimo per uscire da due cicli?
Una tripletta di Pitagora è un insieme di tre numeri naturali, abc, per cui,
a^2 + b^2 = c^2
Ad esempio, 3^2 + 4^2 = 9 + 16 = 25 = 52.
Esiste esattamente una tripletta di Pitagora per cui a + b + c = 1000. Trova il prodotto abc.
La mia soluzione è in 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;
Dal dichiarazioni "Vai a" non sono molto popolari tra i programmatori C++, vorrei sapere, se questo potrebbe essere considerato un uso ragionevole di "goto" . O se c'è una soluzione migliore per il problema che non ha bisogno di "goto". Con ciò non intendo una soluzione che eviti solo "goto", ma che eviti "goto" in un modo che migliori l'algoritmo.
mi piacciono quelle schede 8-space che stai usando .... molto sexy. –
grazie, mi piacciono anche loro :-) – Lucas
Con una scheda di 16 spazi nel mezzo ... –