Как найти mod числа в паскале

Блок-схема

Так как в воскресенье на сайте открывается новая рубрика — решение задач,  мы с вами должны по-быстрому изучить основную часть математических операций, функций и процедур.

Давайте разберемся, что такое функция и процедура. Это подпрограмма — часть программы, выполняющая определенный алгоритм и допускающая обращение к ней из различных частей общей программы. В чем же разница между процедурой и функцией?

Процедуры — мини-программы.

Процедуры используются в случаях, когда в подпрограмме необходимо получить несколько результатов. Из картинки, расположенной ниже вы видите, как работает процедура. Входных данных может не быть вовсе, а может быть сто.

20131220-004613.jpg

Например, программист хочет в своем суперкоде между блоками выходящих значений прописывать 20 амперсандов. Чтобы облегчить себе задачу, он напишет простую подпрограмму.

program superpuper;
var очень много буковок; 
procedure ampersand; 
begin 
write('&&&&&&&&&&&&&&&&&&&&'); 
end;
begin 
суперсложный код;
ampersand; 
суперсложный код;
ampersand; 
суперсложный код; 
ampersand; 
суперсложный код; 
ampersand; 
end.

Функции в Паскале — мега переменные.

Функции отличается от процедуры тем, что после выполнения функции на ее месте в коде ставится одно число, буква, строка и т.д. Набор встроенных функций в языке Паскаль достаточно широк. Например, для того, чтобы подсчитать квадрат числа можно воспользоваться стандартной функцией sqr(x). Как вы, наверное, уже поняли sqr(x) требует лишь один фактический параметр — число.

Пример: a:=sqr(4).

Обратите внимание! Функции необходимо присваивать! Просто написав их в тексте программы, как процедуры, вы ничего не добьетесь!

Структура функции представлена на картинке ниже.

20131220-004554.jpg

Если в программу необходимо включить новую уникальную функцию, ее надо описать также, как процедуру. Более подробно о том, как делать собственные процедуры и функции, мы поговорим через 10 уроков. Ниже вы видите таблицу основных стандартных функций и процедур в Паскаль.

Математические функции

Имя Тип аргумента Результат вычисления Пример
Abs(x) Целый или Вещ. Модуль   х Abs(-6) = 6
Sqrt(x) Вещественный Корень из х Sqrt(25)=5
Sqr(x) Целый и Вещ. Квадрат х Sqr(5)=25
Power(x, a) Вещественный Значение ха Power(5,3)=125
Frac(x) Вещественный Дробная часть х Frac(5.67)=0.67
Sin(x) Вещественный Синус х Sin(45)=0.8509
Cos(x) Вещественный Косинус х Cos(45)=0.5253
Arctan(x) Вещественный Арктангенс х Arctan(5)=1.3734
Int(x) Вещественный Целая часть х Int(5.67)=5.0
Random(x) Целый Случайное число (0..х-1) Random(5)=4
Succ(x) Порядковый Следующий Succ(10)=11
Pred(x) Порядковый Предыдущий Pred(‘Z’)=’Y’

Математические процедуры

Inc(x, a) Целый X:=X+A Inc(5)=6
Dec(x, a) Целый X:=X-A Dec(25,20)=5

Преобразование типов

Trunc(x) Вещественный Целая часть х Trunc(5.67)=5
Round(x) Вещественный Округление х до целого Round(5.67)=6
Важно! Если х = 5.5, то результат – 6, а если х = 6.5, то результат тоже 6!?

Очень странная ошибка.

Очень странная ошибка.

Иногда нам требуется найти частное либо же остаток от деления. В такие моменты на помощь нам приходят такие операции, как div и mod. Заметим, что эти операции выполняются только над целыми числами.

Div

Для того, чтобы найти частное от деления, мы используем операцию div.

   Примеры:

  • 25 div 20 = 1;
  • 20 div 25 = 0;
  • 39 div 5 = 7;
  • 158 div 3 = 52.

Mod

Для того, чтобы найти остаток от деления, мы используем операцию mod.

    Примеры:

  • 25 mod 20 = 5;
  • 20 mod 25 = 0;
  • 39 mod 5 = 4;
  • 158 mod 3 = 2.

Чтобы окончательно понять, с чем мы имеем дело, решим следующую задачу:

Задача 1. Найти сумму цифр двухзначного числа.

Так как эта задача очень простая, мы с вами обойдемся блок-схемой и программой.

Блок-схема

Блок-схема
program Sumoftwo;
var Number, Num1, Num2, Sum: integer;
begin
write('Введите двухзначное число: ');
read(Number);  { Возьмем число 25 }
Num1 := Number div 10; { 25 div 10 = 2 }
Num2 := Number mod 10; { 25 mod 10 = 5 }
Sum := Num1 + Num2; { 2 + 5 = 7 }
write('Сумма двух чисел -- ', Sum);
end.

Задача 2. Найти сумму цифр трехзначного числа.

Чуть усложненная версия предыдущей задачи. Самая большая сложность — вторая цифра.

Блок-схема

Приоритет div и mod больше, чем приоритете + и -. Поэтому в данной программе можно обойтись без скобок.
program Sumoftree;
var Number, Sum: integer;
begin
write('Введите трехзначное число: ');
read(Number);  { Возьмем число 255 }
Sum := Number div 100 + Number mod 10 + Number div 10 mod 10; { 255 div 100 + 255 mod 10 + 255 div 10 mod 10 = 12 }
write('Сумма трёх чисел -- ', Sum);
end.

Вот и всё. На следующем уроке мы с вами начнём изучать особенности PascalABC.Net.

Помимо операций умножения и сложения, над целочисленными переменными производятся операции Div (операция целочисленного деления), Mod (вычисление остатка от целочисленного деления), операция вычитания «-».

program number7;
uses crt;
var A,B,C: integer;
begin
clrscr;
A:=17;
B:=3;
C:=A div B;
writeln ('17 div 3 = ',C);
C:=A mod B;
writeln ('17 mod 3 = ',C);
C:=A-B;
writeln ('17-3 =',C);
readln
end.

В строке №8 используется операция Div. Это операция деления нацело, т. е. в результате получится целое число без остатка. Если 17 разделить на 3, то получится 5,66666… Здесь — целое число 5, оно и будет результатом операции div.
Строка №10. Операция Mod вычисляет остаток от целочисленного деления. Если мы разделим 17 на 3, то получится 5 – целое число и 2 – остаток. Таким образом, результатом операции Mod будет число 2
Теперь запишем нашу программу в Паскале и и запустим ее.

div mod

div mod.



Дополнение к материалу.

Правила приоритета при выполнении операций в Паскале.

  • Сначала выполняются действия над переменными, которые стоят в скобках.
  • Затем вычисляются функции.
  • Затем умножение и деление.
  • Затем сложение и вычитание.

Операции, которые имеют одинаковый приоритет (сложение и вычитание, деление и умножение) выполняются слева направо, т.е. в порядке очереди.







Deutsch (de)
English (en)




français (fr)




















Back to Reserved words.

Mod (modulus) divides two numbers and returns only the remainder.
For instance, the expression «a:= 13 mod 4;» would evaluate to 1 (a=1), while «b := 12 mod 4;» would evaluate to 0 (b=0).

From the language reference:

«The sign of the result of a Mod operator is the same as the sign of the left side operand of the Mod operator. In fact, the Mod operator is equivalent to the following operation :»
 I mod J = I - (I div J) * J

For example «c:= -13 mod 4;» results in c = -1 and «c:= 10 mod -3;» results in c = 1.

This is also what most other languages like C++ and Java do (see note)

From version 3.1.1 FreePascal also supports the mod operator for floating point values when you include the math unit.

The precision used is the highest precision available for the platform.
for instance, the expression «a:= 12.9 mod 2.2;» would evaluate to 1.9. This is equivalent to I mod J = I — int(I / J) * J.

The result is the same as the fmod function for the highest precision available for the platform.

In older versions of FPC that support operator overloading you can add this feature yourself. Here’s an example for double precision modulo.

operator mod(const a, b: double) c: double; inline;
begin
  c:= a - b * Int(a / b);
end;

Note regarding Delphi compatibility

Delphi conforms to ISO 7185 Pascal instead of the de facto standard. This ISO standard states:

Evaluation of a term of the form x mod y is an error if y is less than or equal to zero; otherwise there is an integer k such that x mod y satisfies the following relation:
 0 <= x mod y = x - k * y < y.

That means that in Delphi «c:= 10 mod -3;» results in an error and an exception will be thrown at run-time.

Автор: Виктор Трофимов, МОУ гимназия №5, г. Волгодонск, Ростовская обл.

В Паскале существует возможность использования трех методов определения кратности числа.

1. С помощью оператора div (целоисчисленное деление). Как это работает?

x := 10 div 2 (переменная x получит значение 5; процессор вычисляет пример 10 / 2 и выдает результат 5)

x := 10 div 3 (переменная x получит значение 3; вычисляется 10 / 3 = 3,33 и отбрасывается дробная часть, такова природа работы оператора div)

x := 10 div 4 (переменная x получит значение 2; 10 / 4 = 2,5 – и опять отбрасывается дробная часть).

2. С помощью оператора mod (остаток от деления).

Тут и понятно, остаток от деления числа, которое полностью делится на делитель, будет равен нулю.

x := 10 mod 2 (переменная x получит значение 0; процессор вычисляет по формуле 10 – ((10 div 2) * 2) = 0, то есть оператор mod возвращает пользователю остаток, который получится в результаты вычитания из делимого числа разницы между первым в сторону уменьшения делящимся нацело на делитель… эмм, надеюсь, понятно. Еще на примерах:

x := 10 mod 3 (переменная x получит значение 1; происходит следующее 10 div 3 = 3 (целое), дальше 10 – 3 (результат) * 3 (делитель) = 1)

x := 10 mod 4 (переменная x получит значение 2; вычисляется 10 – ((10 div 4) * 4)).

Внимательно изучите работу операторов div и mod, они важны для решения задач ГИА по информатике.

3. С помощью функции отбрасывания дробной части числа (не округления, а именно отбрасывания).

trunc(z), где z – вещественное число или математическое выражение.

Примеры:

x := trunc(3.33) (x получит значение 3; «удаляется» дробная часть)

x := trunc(10 / 3) (x получит значение 3, 10 / 3 = 3.33, отбрасываем «,33»)

x := trunc(10 / 2) (x получит значение 5, 10 / 2 = 5 (целое число))

x := trunc(10 / 4) (x получит значение 2, 10 / 4 = 2.5, отбрасываем дробную часть)

Но этот метод не совсем удобен, так как дублирует более понятный в тексте программы div. Таким же образом можно проверить кратность чисел:

Если ((x mod 3) = 0), то число кратно трем (остаток от деления равен нулю).

Если ((x mod 8) = 0), то число кратно восьми и т.д.

Как найти цифру, на которую оканчивается число? Все просто, надо найти остаток от деления числа на 10.

Примеры:

Результатом 150 mod 10 будет число 0, т.к. 150 полностью делится на 10. 0 – это последняя цифра числа.

153 mod 10 вернет 3 (153 – ((153 div 10) * 10); 3 – эта цифра, на которую оканчивается число.

87 mod 10 вернет 7 – последнюю цифру числа.

33 mod 10 вернет 3 и т.д. Попробуйте сами: writeln(33 mod 10);

Автор:

Содержание

  1. Операции с целыми числами ( mod div )
  2. Деление нацело ( div )
  3. Остаток от деления ( mod )
  4. Стандартные функции PascalABC

Над целыми числами В PascalABC можно проводить не только простые арифметические операции (сложение, вычитание, деление и умножение). Есть еще две: деление нацело (обозначается div) и деление с остатком (mod). Рассмотрим их применение на примерах.

Деление нацело ( div )

Целочисленное деление — это деление, при котором одно целое число делится на другое целое число. Результатом является целая часть их частного.

Результатом операции является целое число, полученное в результате деления, а точнее — целая часть результата деления.

15 div 3 = 5 //результат обычного деления 5
 
14 div 3 = 4 //результат обычного деления 4.66666
 
 3 div 2 = 1 // результат обычного деления 1.5

Остаток от деления ( mod )

Деление с остатком — это деление одного числа на другое, при котором остаток не равен нулю. 16: 7 = 2 (ост. 2) 23: 8 = 2 (ост. 7)

Результатом операции является целое число — разность делимого числа и ближайшего к нему меньшего или равного целого числа, которое делится нацело на делитель.

15 mod 3 = 0 //результат 15-15
 
14 mod 3 = 2 //результат 14-12
 
 3 mod 2 = 1 // результат 3-2

Важно! Операции div и mod применяются только к целым числам.

Операцию mod используют для определения кратности чисел,  то есть делимости на какое-нибудь число нацело. Например, что числа 2, 6, 12, 24 кратны двум (чётные числа). Получается, что все числа не кратные двум — нечётные. Или числа 5,10,15,20 кратны 5.

Рассмотрим несколько примеров использования данных операций в программировании.

Задание 1. Дан размер файла в байтах. Используя операцию деления нацело, найти количество полных килобайтов, которые занимает данный файл (1 килобайт = 1024 байта).

Решение:

program zadanie1;
var b:integer; {размер файла}
begin
read(b);	{ ввод значения b в байтах}
b:= b div 1024;	{ вычисление количества полных килобайтов в файле}
write(b);	{вывод на экран значения в килобайтах}
end.

Задание 2. Дано трехзначное число k. Найдите сумму его цифр S.

Решение:

program zadanie2;
var k,s,c1,c2,c3:integer;  {k-число, s-сумма цифр, c1,c2,c3-цифры}
begin
read(k);	           { ввод значения числа k}
  с1:= k mod 10;	   { вычисление первой цифры - разряд единиц}
  с2:= (k div 10) mod 10;  { вычисление второй цифры - разряд десятков}
  с3:= k mod 100;	   { вычисление третьей цифры - разряд сотен}
  s:=c1+c2+c3;             { вычисление суммы цифр}
write(s);	           {вывод на экран результата}
end.

Стандартные функции PascalABC

При составлении программ на Паскале для расчетов можно использовать функции, которые присутствуют в среде программирования. Ниже приведен список наиболее востребованных функций: степень, модуль, корень и другие

Обозначение функции Тип результата Описание функции
Abs(x) совпадает с типом параметра Модуль в паскале определяется через функцию Abs(x). Она возвращает абсолютное значение (модуль) x. Пример, если х=-6, то Abs(x)=6.
Sqr(x) совпадает с типом параметра Вторая степень в паскале может быть вычислена через функцию Sqr(x).  Она возвращает квадрат числа x. Пример, если х=5, то Sqr(5)=25
Sqrt(x) Квадратный корень в паскале извлекается с помощью функции Sqrt(x). Она возвращает квадратный корень из числа x. Например, если х=49, то Sqrt(49)=7. Аргумент функции должен быть положительным числом.
Power(x,y) real Произвольную степень в паскале вычисляют с помощью Power(x,y). Она возвращает x в степени y. Например, если основание х=2, а степень у=5, то Power(2,5)=32. В PascalABC степень можно вычислить следующей записью: 2**5 (две звездочки — это возведение в степень)
Int(x) real возвращает целую часть х
Random(x) integer возвращает случайное целое в диапазоне от 0 до x-1
Random real возвращает случайное вещественное в диапазоне [0..1)
Frac(x) real возвращает дробную часть х
Trunc(x) x-real, integer возвращает целую часть х

Подробный и более полный список функций можно получить в справочной системе среды программирования PascalABC в меню Помощь — Содержание — Справочник по языку — Стандартные процедуры и функции

Задание 3. Вычислите значение выражения y=5x7-4x2+3

Решение:

program zadanie3;
var x,y:real;                  {x-аргумент, y-функция}
begin
read(x);	               { ввод значения x}
  y:= 5*power(x,7)-4*sqr(x)+3; { вычисление значения выражения}        
write(y);	               {вывод на экран результата}
end.

Понравилась статья? Поделить с друзьями:
  • Как исправить растяжки на джинсах
  • Как найти разложение вектора по базису векторов
  • Как пишется в последствие исправил
  • Как найти архивированные письма в аутлуке
  • Как найти номер двигателя на опеле зафира