Согласие на обработку персональных данных.

15.12.2018
Новая задача Как преобразовать байт в килобайт.

05.12.2018
Новые видео и статья Параграфы и выравнивание текста в HTML.

01.12.2018
Новый выпуск журнала Автоматизация и программирование.

26.11.2018
Новые видео и статья Функция Concat.

25.11.2018
Новые видео и статья Справка в Lazarus.



Раздел: Задачи / Простейшие /

Вывести на экран все натуральные числа А, В, С

Условие задачи 2.18

Задача 2.18
Вывести на экран все натуральные числа А, В, С, удовлетворяющие уравнению А2 + В2 = С2, условию А < B, и меньшие 20.

Вот здесь новичкам придётся поломать голову, хотя задача кажется сложной только на первый взгляд. А на самом деле, если разложить всё по полочкам и неспеша подумать, то всё окажется не так страшно.

Если вы забыли, что такое натуральное число, то читайте здесь, а мы перейдём к решению.

Итак, нам нужно подставить в уравнение такие числа А, В, С, чтобы они:

  1. Соответствовали уравнению.
  2. А было меньше, чем В.
  3. Все числа А, В, С были меньше 20.

Будем считать, что ноль НЕ входит в диапазон необходимых нам чисел (проверять условия при А = 0 нет смысла, так как в этом случае уравнение сводится к В2 = С2).

Условий кажется много, но на самом деле второе условие сильно облегчает нам задачу, потому что нам не надо будет проверять такие, например, комбинации, как А = 3, В = 1. Поэтому нам достаточно перебрать в цикле все значения А от 1 до 18 (потому что А должно быть меньше В, а В должно быть меньше 20, то есть не более 19).

У нас будет три вложенных цикла, так как нам надо “прогнать” через наши условия три числа. Остальное будет понятно из комментариев к примерам.

Решение задачи 2.18 на Паскале
 
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.   
Решение задачи 2.18 на С++
#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;
}

Вывести на экран все натуральные числа А, В, С


Основы C++ Основы C++

C++ - это один из самых популярных языков программирования. Не важно, на каком языке программируете лично вы. Но, если вы хотя бы в общих чертах не знаете С++, то это большой пробел в вашем образовании, который надо восполнить как можно быстрее... Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика