Вывести большее по модулю

Рейтинг: -1Ответов: 1Опубликовано: 14.02.2015

Даны два целых числа. Вывести большее по модулю из них. Что не так?

var
a, b, c, d: integer;
 begin
readln(a, b);
c := a mod 2;
d := b mod 2;
if c >= d then writeln(a)
        else writeln(b)
end.

Ответы

▲ 1Принят

Joks, Вас сбило с толку название оператора получения остатка от деления: mod, и Вы в Вашем случае получаете на самом деле остаток от целочисленного деления на 2, а не модуль числа. Два парных оператора div и mod используются для целочисленного деления - для получения частного и остатка.

Так, например, 13 div 2 = 6, а 13 mod 2 = 1 (Целое частное при делении 13-ти на 2 = 6, а остаток при этом делении =1)

В Вашем же случае, чтобы получить модуль числа необходимо использовать ф-цию abs(...) Таким образом Ваша программа должна выглядеть так:

program BiggestByMod;
var 
  a,b : integer;
begin
  ReadLn(a,b);
  if abs(a) >= abs(b)
    then WriteLn(a)
    else WriteLn(b);
end.

Тогда, если на входе, например: 11 -27

То на выходе: -27