[АП 2022/06] - свежий номер журнала
Как определить код ошибки при операциях ввода-вывода
Ваша первая программа на Си Шарп в Visual Studio - конечно же Hello World
[АП 2022/05] - свежий номер журнала
Как удалить пустую папку в Паскале

Как стать успешным фрилансером
Раздел: Задачи / Простейшие /
Вывести на экран все натуральные числа А, В, С
![]() |
|
Условие задачи 2.18
Задача 2.18
Вывести на экран все натуральные числа А, В, С, удовлетворяющие уравнению
А2 + В2 = С2, условию А < B, и меньшие 20.
Вот здесь новичкам придётся поломать голову, хотя задача кажется сложной только на первый взгляд. А на самом деле, если разложить всё по полочкам и неспеша подумать, то всё окажется не так страшно.
Если вы забыли, что такое натуральное число, то читайте здесь, а мы перейдём к решению.
Итак, нам нужно подставить в уравнение такие числа А, В, С, чтобы они:
- Соответствовали уравнению.
- А было меньше, чем В.
- Все числа А, В, С были меньше 20.
Будем считать, что ноль НЕ входит в диапазон необходимых нам чисел (проверять условия при А = 0 нет смысла, так как в этом случае уравнение сводится к В2 = С2).
Условий кажется много, но на самом деле второе условие сильно облегчает нам задачу, потому что нам не надо будет проверять такие, например, комбинации, как А = 3, В = 1. Поэтому нам достаточно перебрать в цикле все значения А от 1 до 18 (потому что А должно быть меньше В, а В должно быть меньше 20, то есть не более 19).
У нас будет три вложенных цикла, так как нам надо “прогнать” через наши условия три числа. Остальное будет понятно из комментариев к примерам.
program abc; //**************************************************************** // КОНСТАНТЫ //**************************************************************** const MAX_NUM = 20; //**************************************************************** // ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ //**************************************************************** var A, B, C : WORD; //**************************************************************** // ФУНКЦИИ И ПРОЦЕДУРЫ //**************************************************************** //**************************************************************** // Функция вычисляет сумму квадратов чисел А и В. //**************************************************************** function CalcAB(A, B : WORD) : WORD; begin Result := Sqr(A) + Sqr(B); end; //**************************************************************** // ОСНОВНАЯ ПРОГРАММА //**************************************************************** begin for A := 1 to MAX_NUM-2 do //Перебираем значения А for B := 1 to MAX_NUM-1 do //Перебираем значения В begin if A >= B then Continue; //Если А < B, то пропустить цикл for C := 1 to MAX_NUM-1 do //Перебираем значения С //Если удовлетворяет уравнению, то выводим на экран if Sqr(C) = CalcAB(A, B) then WriteLn('A =', A:3, ', B =', B:3, ', C =', C:3, ' ', ' (', Sqr(A), ' + ', Sqr(B), ' = ', Sqr(C), ')'); end; WriteLn('The end. Press ENTER...'); ReadLn; end.
#include <cstdlib> #include <iostream> #include <iomanip> //!!! Подключить этот файл using namespace std; //**************************************************************** // КОНСТАНТЫ //**************************************************************** const unsigned short MAX_NUM = 20; //**************************************************************** // ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ //**************************************************************** unsigned short A, B, C; //**************************************************************** // ФУНКЦИИ И ПРОЦЕДУРЫ //**************************************************************** //**************************************************************** // Функция вычисляет сумму квадратов чисел А и В. //**************************************************************** unsigned short CalcAB(unsigned short A, unsigned short B) { return(A * A + B * B); } //**************************************************************** // ОСНОВНАЯ ПРОГРАММА //**************************************************************** int main(int argc, char *argv[]) { for(A = 1; A <= MAX_NUM-2; A++) for(B = 1; B <= MAX_NUM-1; B++) { if (A >= B) continue; for(C = 1; C <= MAX_NUM-1; C++) if ((C*C) == CalcAB(A, B)) cout << "A = " << A << ", B =" << setw(3) << B << ", C =" << setw(3) << C << " " << " (" << A*A << " + " << B*B << " = " << C*C << ")" << endl; } system("PAUSE"); return EXIT_SUCCESS; }

Подписаться на канал в YouTube
Вступить в группу "Основы программирования" Подписаться на рассылки по программированию |
![]() |
Основы C++
C++ - это один из самых популярных языков программирования. Не важно, на каком языке программируете лично вы. Но, если вы хотя бы в общих чертах не знаете С++, то это большой пробел в вашем образовании, который надо восполнить как можно быстрее... Подробнее... |