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

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

Основы программирования 2.0 Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...

Условие задачи 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;
}

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


Как стать программистом 2.0 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...
Помощь в технических вопросах Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

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