Оператор по модулю в Паскале?

Как я могу получить остаток от деления 2 ints?

При использовании Java я использую оператор %, но что я могу сделать в Pascal?


person Superzarzar    schedule 17.05.2013    source источник


Ответы (5)


Используйте оператор мода, как описано здесь. http://www.tutorialspoint.com/pascal/pascal_operators.htm

A mod B
person jack_carver    schedule 17.05.2013
comment
Пожалуйста, опишите это здесь. Ваш ответ теряет всякий смысл, если большая часть контента находится за пределами сайта и этот сайт по какой-то причине недоступен (он перемещен, отключен от сети и т. д.). Ответы должны содержать достаточно содержания, чтобы ответить на вопрос здесь; ссылки на внешние сайты следует использовать только в качестве дополнительных ссылок. Спасибо. - person Ken White; 17.05.2013

Вы можете использовать n mod 2 так же, как n % 2 в Java (в любом случае, когда n>=0... не уверен, что Паскаль делает с отрицательными числами, но Java делает не то.)

Однако наиболее распространенной причиной для этого является проверка того, является ли число четным или нечетным, и в Паскале для этого есть встроенная функция odd(n). Во многих компиляторах ord(odd(n)) — это более быстрый способ получить остаток n по модулю 2.

person Mike Housky    schedule 29.04.2016

К сожалению, мод Pascal нельзя использовать таким образом. Причина в том, что я проделал незавершенную работу по уговорам комитета по стандартам Pascal.

Я лоббировал и умолял комитет по стандартам сделать мод правильно, пока в конце концов они не уступили. Так, например, -5 по модулю 2 равно 1. К моему ужасу, целочисленное деление было выполнено неправильно. Я никогда не думал, что они не совпадут. По сей день в Паскале (-5 по модулю 2) + (-5/2) равно -4. Я виню себя.

person Jive Dadson    schedule 24.01.2018
comment
Палец вверх за попытку. Однако последний бит ... вы имели в виду (-5 mod 2) + (-5 div 2) * 2? Я бы не ожидал, что (mod b) + (a / b) будет чем-то особенным, но вы хотели бы, чтобы (mod b) + (div b)*b вернулось к a. (И я получаю от этого -3, а не -4.) - person Mike Housky; 07.12.2020

Оператор modulo Паскаля — это mod. Он работает так же, как оператор % в Java и C/C++:

var
  X, Y: Integer;
begin
  X := 10;
  Y := X mod 4;  // result: Y = 2
  Y := X mod 3;  // result: Y = 1
end;
person Ken White    schedule 17.05.2013
comment
Также имейте в виду, что div и mod являются целочисленными версиями деления по модулю, а / возвращает реальный результат. - person David R Tribble; 20.05.2013
comment
На плакате указан остаток от деления 2 ints, но, вероятно, на это следует указать будущим читателям. Спасибо. :-) (Операции по модулю всегда целочисленные и, следовательно, приводят к целочисленным значениям.) - person Ken White; 20.05.2013

В delphi есть оператор MOD, он же x = Y MOD Z. должен работать в паскале

person Marcel-Is-Hier    schedule 17.05.2013