• Предмет: Информатика
  • Автор: mansonmansonmanson
  • Вопрос задан 2 года назад

Создайте программу (Pascal), которая запрашивает два целых числа и выводит на экран удвоенное первое число и половину второго числа.

Протокол программы:
a, b = 12 17
a = 2 = 24 b : 2 = 8.5

Ответы

Ответ дал: gregorbednov
1

Ответ:

program AB;

var

   a: Integer;

   b: Integer;

   b2: Real;

begin

   writeln('a, b = '); readln(a,b);

   a := a * 2;

   b2 := b / 2;

   writeln('a*2 = ', a, ' b : 2 = ', b2);

end.

Объяснение:

Программа имеет 3 переменные: a, b (для входных данных), b2 (для результата деления, который потенциально может быть не целым числом, а потому требует типа Real).

Программа выводит приглашение на ввод, считывает два целых числа (считывает их именно как целые числа Integer, что от нас и требуется по задаче), затем умножает число a на 2, а для b "просто разделить на 2" нельзя, т.к. надо учесть возможность деление может дать и вовсе не целое число (как в примере), поэтому результат мы записываем в переменную вещественного типа Real с именем b2.

Дальше вывод.

БОНУС. В принципе, данная задача имеет альтернативное решение через конструкцию если...то (if...then), которая использует только целые значения, но, наверное, данное решение неуместно.

Тем не менее, я всё же приведу его. Если Вы пока не проходили if.. then, то можете вернуться, когда пройдёте.

Суть решения сводится к тому, что существует всего один возможный ненулевой остаток от деления числа на 2, который в десятичном виде всегда записывается точно как ".5").

Поэтому

program AB_alt;

var

    a: Integer;

    b: Integer;

    bmod: Integer;

begin

    writeln('a, b');

    a := a * 2;

    bmod := b mod 2;

    b := b div 2;

    writeln('a*2 = ', a, 'b : 2 = ', b);

    if (bmod <> 0) then write('.5');

end.

Вычисляется остаток от деления, затем выводится целая часть от деления b на 2, и затем, если имеется ненулевой остаток (для положительных чисел он равен 1, для отрицательных -1), но в целом это всегда добавляет просто добавляет к целой части запись ".5".

Данный метод иногда бывает уместен (дело в том, что поведение real'ов не всегда предсказуемо для человека, не всегда оптимально по ресурсозатратам и т.п.), но точно не в учебных программах.

Вас заинтересует