Tôi đang giải quyết vấn đề 9 trên Project Euler. Trong giải pháp của tôi, tôi sử dụng câu lệnh "goto" để thoát khỏi hai vòng lặp. Vấn đề là như sau:Sử dụng goto một cách hợp pháp để thoát ra khỏi hai vòng?
Một bộ ba Pythagore là một tập hợp của ba số tự nhiên, abc, mà,
a^2 + b^2 = c^2
Ví dụ, 3^2 + 4^2 = 9 + 16 = 25 = 52.
Có tồn tại chính xác một bộ ba Pythagorean mà a + b + c = 1000. Tìm sản phẩm abc.
Giải pháp của tôi là trong 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;
Kể từ khi "goto" báo cáo không phải là rất phổ biến trong c lập trình viên ++, tôi muốn biết, nếu điều này có thể được coi là sử dụng hợp lý "goto" . Hoặc nếu có giải pháp tốt hơn cho vấn đề không cần "goto". Bằng cách đó tôi không có nghĩa là một giải pháp mà chỉ tránh "goto", nhưng mà tránh "goto" trong một cách để cải thiện các thuật toán.
tôi thích các tab 8 không gian bạn đang sử dụng .... rất gợi cảm. –
cảm ơn bạn, tôi cũng thích chúng :-) – Lucas
Với một tab 16-không gian ở giữa ... –