Раздел: Задачи / Простейшие /
Вывести на экран все натуральные числа А, В, С
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее... |
Условие задачи 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; }
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее... |
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |