Линейные программы: Команды MOD DIV

В этом материале пойдет речь о командах 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) цифрового числа:

Код


  1. Var

    d_tis:=десятки тысяч;
    tis:=тысячи;
    sot:=сотни;
    des:=десятки;
    edn:=единицы;
  2. 2 цифры

    des:=n div 10;
    edn:=n mod 10; 
  3. 3 цифры

    sot:=n div 100;
    des:=n mod 100 div 10;
    edn:=n mod 10 div 1;
  4. 4 цифры

    tis:=n div 1000;
    sot:=n mod 1000 div 100;
    des:=m mod 100 div 10;
    edn:= n mod 10 div 1;
  5. 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
Запомнить алгоритм использования команд при разбивке числа на цифры

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

0 0 vote
Article Rating
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments