В этом материале пойдет речь о командах MOD и DIV.
Расмотрятся вопросы назначения этих команд, типичных задач и примеры написания программного кода. Для понимания, что делают эти команды, вернемся в начальную школу, где
Вы учили деление нацело и деление с остатком.
Пример:
7 делить на 2 : Вы говорили будет 3 и остача 1: то есть 7 = 3*2+1.
15 делить на 3: Вы говорили будет 5 остача 0: то есть 15= 5*3+0.
Так вот, команда MOD возвращает остачу от деления числа А на число В (легко запомнить ибо в слове Остача и команде MOD есть буква О).
Команда DIV возвращает целую часть от деления числа А на число В.
Примеры:
5 mod 2=1; 12 mod 6=0; 9 mod 5=4.
5 div 2=1; 12 div 6=2; 9 div 5=1.
ВАЖНО: переменные, которые используются с командами MOD DIV должны быть Integer
В каких базовых задачах используются данные команды:
1. Найти целую часть (остачу) от деления одного числа на другое.
2. Перевод из одних метричных величин в другие: метры в километры, граммы в килограммы и т. д.
3. Разбивка числа на цифры с последующим выполнением неких действий.
1. Задача: Дано два целых числа. Найти целую часть и остачу от деления одного числа на другое
Var a,b:integer; r1,r2:integer; BEGIN Write('A=');Readln(a); Write('B=');Readln('b'); r1:=a div b; r2:= a mod b; Writeln('Целая часть=',r1); Writeln('Остача=',r2); readln; END.
2. Задача: Дано расстояние L в метрах (Целое число). Написать программу, которая переводит в км. и м.
Для L=7255 результат вывести в виде: 7255 м = 7 км. 255 м.
Итак, если мы решаем эту задачу в ручную — то мы знаем, что 1 км = 1000 м.
Когда мы поделим 7255 на тысячу с остачей (как в начальной школе) то мы запишем, что 7255 = 7 целых и 255 в остаче
7 — это наши км (целая часть), 255 это наша остача от деления на 1000 и она дает нам метры.
Теперь о переменных: нам дано L — целое: Integer
Для рассчета выберем переменные klm metr. (Напоминаю, что имена переменных программист выбирает самостоятельно, исходя из их смысловой нагрузки)
Поскольку в ход идут MOD DIV то наши klm metr тоже будут Integer.
Входящие данные это расстояние в метрах L, результат: км и метры.
Var L:integer; klm,metr:integer; BEGIN Write('Расстояние в м=');Readln(L); klm:=L div 1000; metr:= L mod 1000; Writeln(L,' m=',klm,' km', metr,' m') readln; END.
3. Задача: Дано натурально двухцифровое N. Написать программу, которая находит сумму цифр данного числа и частное от деления
Для N=23 результат вывести в виде:
N=23
Сумма=5
Деление= 0.66
Опять таки, вспоминаем младшую школу
23 поделим на 10 с остачей получим 2 целых и 3 в остаче, что дает нам возможность опять использовать MOD DIV
Переменные: число N (входящее):integer, Промежуточный результат: des, edn:integer, Результат summa:integer, chast:real (ибо делим одно число на другое)
Var N:integer; des,edn:integer; summa:integer chast:real BEGIN Write('Число N=');Readln(n); des:=N div 10; edn:= N mod 10; summa:=des+edn; chast:=des/edn; Writeln('N=',n'); Writeln(' Сумма=',summa'); Writeln(' Деление=',chast:2:2'); readln; END.
Для самостоятельного разбора найдите закономерность в разбивке на цифры N (2-3-4-5) цифрового числа:
Код
Var
d_tis:=десятки тысяч; tis:=тысячи; sot:=сотни; des:=десятки; edn:=единицы;
2 цифры
des:=n div 10; edn:=n mod 10;
3 цифры
sot:=n div 100; des:=n mod 100 div 10; edn:=n mod 10 div 1;
4 цифры
tis:=n div 1000; sot:=n mod 1000 div 100; des:=m mod 100 div 10; edn:= n mod 10 div 1;
5 цифр
d_tis:=n div 10000; tis:=n mod 10000 div 1000; sot:=n mod 1000 div 100; des:=n mod 100 div 10; edn:=n mod 10 div 1;
Что нужно запомнить:
Назначение команд MOD (остача) DIV (целая часть)
Помнить,.что они работают только с типом Integer
Запомнить алгоритм использования команд при разбивке числа на цифры