Дек
11th

Урок 11. Циклы и целочисленная арифметика

Урок из цикла: “Язык программирования Паскаль

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

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

Целочисленная арифметика языка Паскаль основана на использовании пяти стандартных целых типов: Byte, Word, ShortInt, Integer, LongInt.

Cо всеми  целыми типами  связан набор из пяти основных арифметических операций:
+, -, *, div, mod.

Первые три операции имеют обычный смысл сложения, вычитания и умножения. Последние две  определяются так: A div B – частное от деления нацело, A mod B – остаток от  деления нацело двух целых чисел A и B.

При этом, для неотрицательных А и В (В‡0), частное  A div B показывает, сколько раз делитель – число B, содержится в делимом – числе A; в то же время, остаток  A  mod B показывает, сколько останется, если из делимого – числа А, вычесть все вхождения в него делителя – числа В.

Например.

15 div 6 = 2 (Здесь 2 – частное. Оно показывает, сколько раз делитель – число 6, содержится в делимом – числе 15).

15 mod 6 = 3 (Здесь  3 – остаток. Он показывает, сколько останется, если из числа 15, вычесть все вхождения в него числа 6).

Для целых, неотрицательных  A и B, операции div и mod связаны простым соотношением:
A mod B = A – (A div B)*B.

Большая часть учебных задач целочисленной арифметики построена на свойствах делимости и решается именно с применением операций div и mod.

При этом, обычно, используется несколько стандартных  приёмов,  которые для успешного решения таких задач, необходимо твёрдо усвоить.

А mod B = 0 - условие делимости целого A на целое B.
A mod 2 = 0 - условие чётности целого A.
A mod 10 - значение последней цифры в десятичной записи целого  А
(например, 1234 mod 10 = 4).
A div 10 число, десятичная запись которого получится отбрасыванием последней цифры в десятичной записи целого числа А (например, 1234 div 10 =123).
A mod p - значение последней цифры в p-ичной записи целого  А (например, при p=2, A mod 2 – последняя цифра записи А в двоичной системе счисления);
A div p - число, p-ичная запись которого получится отбрасыванием последней цифры в p-ичной записи целого числа А (например, 510=1012;  510 div 2 =210=102; т.е. из 1012 получили 102);

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

Пример1. Из чисел от 10 до 99 вывести те, сумма цифр которых равна n(0<n<=18).

Решение

Обозначим:

k- это просматриваемое число;

p1 – это первая цифра числа k;

p2 – это вторая цифра числа k;

s – это сумма цифр данного числа k.

Число k будем выводить на экран только в том случае, когда сумма p1 и p2 будет равна n.

Program Primer_1;
Var k,n,p1,p2,s : Integer;
Begin
  Writeln('Введите целое число n (0<n<=18):');
  Readln(n);
  For k:= 10 To 99 Do {перебор всех двузначных чисел}
    Begin
      p1 := k Div 10; {выделяем первую цифру}
      p2 := k Mod 10; {выделяем вторую цифру}
      s := p1+p2; {находим сумму цифр}
      If s = n Then Writeln(k); {если сумма равна n, то выводим k}
    end;
end.

Пример 2. Дано натуральное число n (n<=9999). Определить, является ли оно палиндромом (”перевертышем”), с учетом четырёх цифр. Например, палиндромами является числа: 2222, 6116, 0440.

Решение

Обозначим:

n – вводимое число;
m – дубликат числа n;
a – перевертыш числа n;
i – переменная цикла для создания перевертыша.

Program Primer_2;
Var n,m,a,i : Integer;
Begin
    Writeln('введите целое число, не большее 9999');
    Readln(n);
    m:=n;{создаем дубликат числа}
    a:=0;{перевертыш}
    {создание перевертыша}
    For i=1 To 4 Do {так как число четырехзначное}
      Begin
        a := a * 10 + m Mod 10;
        m := m Div 10;
    end;
    if a = n then writeln('Да!')  else writeln('Нет.');
    {Если перевертыш равен данному числу, то выводим "Да",
     иначе - "Нет"}
End.

В этом уроке мы рассмотрели задачи на целочисленную арифметику с использованием операторов цикла.

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

Следующий урок: Циклы и числовые последовательности

 

Поделиться с друзьями


Оставить комментарий или два