Паскаль. Основы программирования


Логические операции - часть 2


Это известно нам, потому что с раннего возраста мы используем такую форму записи чисел. Мы условились считать, что на первом месте слева стоит цифра единиц, на втором - цифра десятков, на третьем - цифра сотен и т.д.

Компьютеру это неизвестно! Он любое число переводит на язык двух цифр -

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

Способ первый достаточно простой. Сущность которого в следующем.

Для определения цифры сотен делим данное число на 100 и остаток отбрасываем, т. е. выполняем целочисленное деление.

Для определения цифры десятков надо из данного числа вычесть сотни, результат разделить на 10 и остаток отбросить.

Для определения цифры единиц надо из данного числа вычесть сотни и десятки. Для записи числа теми же цифрами в обратном порядке, умножим цифру единиц на 100, сложим с цифрой десятков, умноженной на 10 и с цифрой сотен.

Далее из заданного числа вычитаем полученное новое. Например, для числа 342. Выполним целочисленное деление числа на 100, получим цифру сотен:

342 div 100 = 3;

вычитаем из 342 сотни 3*100 и результат делим на 10 - получим цифру десятков:

(342 - 3*100) div

10 = 4;

наконец, вычитаем из заданного числа сотни и десятки, получаем цифру единиц:

342 - 3*100 - 4*10 = 2.

Для записи числа в обратном порядке, умножаем цифру единиц 2 на 100 и складываем с цифрой десятков, умноженных на 10 (4*10) и прибавляем цифру сотен 3. Получим новое число, записанное теми же цифрами, но в обратном порядке:

2

100 + 4
10 + 3 = 243.

Вычитаем: 342 - 243 = 99.

 

Программа

Program Problem1;

    uses WinCrt;

    var

       a, s, d, e, b, r : integer;

    begin

       write('Введите трехзначное число '); readln(a);

       s := a div 100;

       d := (a - s*100) div 10;

       e := a - s*100 - d*10;

       b := e*100 + d*10 + s;

       r := a - b;

       writeln('Искомая разность равна ', r)

    end.

Программа достаточно проста и понятна.

В разделе описаний переменным a, s, d, e, b, r устанавливается целый тип - integer.

Вводится трехзначное число и присваивается переменной a.

Переменной s присваивается результат целочисленного деления введенного числа a на 100. Это значение есть цифра сотен. Переменная d получает значение цифры десятков:

d := (a - s*100) div

10,

переменная e - это цифра единиц:

e := a - s*100 - d*10.

Дальнейшая работа программы понятна.




Начало  Назад  Вперед



Книжный магазин