#10.0 Деление нацело и получение остатка от деления в Паскале (div и mod). Проверка четности и нечетности чисел
Primary tabs
(урок в процессе разработки)
Математическая подготовка
Прежде чем читать этот урок разберите темы и сделайте упражнения:
- Операция деления нацело, получение остатка отделения -- разбор и примеры
И затем можно уже перейти к примерам кода дальше.
Общая идея
Общую идею работы операторов div и mod можно проиллюстрировать примером кода:
var a, b: integer; begin writeln('Введите делимое:'); readln(a); writeln('Введите делитель:'); readln(b); writeln(a, '/', b, '=', a div b); writeln('Остаток=', a mod b); readln(); end.
Оператор mod
Для получения остатка от деления числа $A$ на число $B$ используйте выражение с оператором mod:
$ A \; mod \; B$
Например:
b := 78 mod 33; // получим 12 = 78 - 66 = 78 - 33*2
Примеры для конкретных чисел
При этом (результат операции -- остаток от деления):
5 mod 2 // 1 3 mod 2 // 1 6 mod 2 // 0 8 mod 2 // 0 4 mod 1 // 0 3 mod 5 // 3
Узнать делится ли число нацело на другое
С помощью условного оператора в Паскаль можно узнать делится ли одно число на другое.
Приведём пример программы, которая получает из консоли (от пользователя) два целых числа и проверяет делится ли первое на второе с помощью оператора mod.
Идея состоит в том, что если число $a$ делится на $b$ нацело, то остаток от такого деления равен нулю.
Приведём решение:
var a, b:integer; begin writeln('vvedite chislo a:'); readln(a); // считываем число а writeln('vvedite chislo b:'); readln(b); // считываем число b if (a mod b) = 0 then // проверяем делимость writeln(a, ' delitcy na ', b, ' nacelo') else writeln(a, ' NE delitcy na ', b, ' nacelo'); readln(); // удержимаем консоль end.
Четность/нечетность (делимость на 2)
Аналогично коду выше, если число делится нацело на 2 -- то оно четное (остаток равен нулю), иначе -- нечетное.
Примеры
Пример №1 - получаем целую часть от деления и остаток на 2
var a, b, c, d : integer; begin writeln('Введите целое число:'); readln(a); writeln(a, '/2=', a div 2); writeln('Остаток=', a mod 2); readln(); end.
Пример №2 -- Определяем делимость
Определяем является ли число 8 четным:
var a, b: integer; begin writeln('8 четное:', (8 mod 2) = 0); readln(); end.
Определяем делится ли число 9 на 3:
var a, b: integer; begin writeln('9 делится на 3:', (9 mod 3) = 0); readln(); end.
Видео-пояснения
Для этого урока есть следующию видео-пояснения:
- Div и mod для деления и получения остатка в Паскале -- УТОЧНЕНИЕ: в видео говорится, что мы еще не знаем условный оператор, но это не так! Условный оператор по порядку изучения идет раньше, поэтому в тексте этого урока вы встретите примеры его использования.
Задачи
- Пользователь вводит число, определите делится ли оно на 4
- Пользователь вводит 4 целых числа, выведите на экран не более трех из этих чисел, которые делятся нацело на 4 (т.е. нужно вывести те числа, которые делятся на 4, но не более трех штук).
Подсказка: если решить не получается или для закрепления см. видео-разбор решения.
- Пользователь вводит 2 целых числа, выведите на экран не более 1 из этих чисел, которые делятся нацело на 4 (т.е. нужно вывести те числа, которые делятся на 4, но не более одного).
(Задача добавлена для закрепления идеи решения аналогичной задачи про 4 числа выше, для которой есть разбор)
- Пользователь вводит 3 целых числа, выведите на экран не более 2 из этих чисел, которые делятся нацело на 4 (т.е. нужно вывести те числа, которые делятся на 4, но не более двух).
(Задача добавлена для закрепления идеи решения аналогичной задачи про 4 числа выше, для которой есть разбор)
- Пользователь вводит 5 целых числа, выведите на экран не более трех из этих чисел, которые делятся нацело на 4 (т.е. нужно вывести те числа, которые делятся на 4, но не более трех штук).
(Задача добавлена для закрепления идеи решения аналогичной задачи про 4 числа выше, для которой есть разбор)
---------------
Дополнительная проверка знаний (если выше все понятно, решать не обязательно):
- Log in to post comments
- 41184 reads