Продолжим знакомство с целочисленной
арифметикой. Очень часто необходимо чтобы
программа определила, из каких цифр состоит
число, или определила разряд заданной цифры или
наоборот цифру в заданном разряде. Если вы
попросите человека решить эту задачу, проблем не
возникнет, а как быть с компьютером. Для него
любое число это набор нулей и единиц, т.е.
двоичный код. В отличие от нас компьютер все
действия выполняет в двоичной системе. Например,
число 27 хранится в его памяти как 11011. И где здесь 2
и 7?
Для решения этих задач надо вспомнить, что
собой представляет любое число десятичной
системы счисления (т.е. той, к которой мы с вами
привыкли).В позиционной системе счисления (к
которой относится десятичная система) величина,
обозначаемая цифрой в записи числа, зависит от ее
позиции. Например, в числе 333 первая цифра
обозначает три сотни, вторая - три десятка, третья
- три единицы. Любое число можно записать в виде:
Поэтому для обработки десятичных чисел
используется 10 в соответствующей степени.
Например, надо получить число, образованное при
перестановке цифр заданного числа.
Program prim_6;
Var n,x1,x2,m:integer;
Begin
Write('введите двузначное число');
Readln(n);
X1:=n mod 10; {выделяем из числа единицы}
X2:=n div 10; {получает число десятков в
числе}
M:=x1*10+x2; {число единиц умножаем на 10,
получаем десятки}
Writeln(m);
Readln
End.
Пусть дано n=27.
X1:= 27 mod 10 = 7
X2:= 27 div 10 = 2
M:=7*10+2 = 72, что и требовалось получить.
К сожалению, таким образом, мы можем
определить лишь крайние цифры числа. А если
цифра, которая нам нужна, стоит не с краю? Не беда,
сделаем ее крайней. Например, дано трехзначное
число, надо определить среднюю цифру числа.
Пусть а=246
B:=a div 10 = 24
B:=b mod 10 = 4
Или по другому:
B:=a mod 100 = 46
B:=b div 10 = 4
Задания для
тренировки.
1. Дано двузначное число. Найти:
a. число десятков в нем;
b. число единиц в нем;
c. сумму его цифр;
d. произведение его цифр.
2. Дано трехзначное число. Найти:
a. Число единиц в нем;
b. Число десятков в нем;
c. Сумму его цифр;
d. Произведение его цифр.
3. Дано трехзначное число. Найти число,
полученное при прочтении его цифр справа налево.
4. Дано трехзначное число. В нем зачеркнули
первую слева цифру и приписали ее в конце. Найти
полученное число.
5. Дано трехзначное число. В нем зачеркнули
последнюю справа цифру и приписали ее в начале.
Найти полученное число.
6. Дано трехзначное число. Найти число,
полученное при перестановке первой и второй цифр
заданного числа.
7. Дано трехзначное число. Найти число,
полученное при перестановке второй и третьей
цифр заданного числа.
8. *Дано вещественное число А, содержащее два
знака до запятой и два после. Получить новое
число, поменяв в числе А целую и дробную части.
9. *В кассе имеются купюры достоинством в К
рублей и в 1 рубль. Выдать N рублей минимальным
набором купюр заданного достоинства.
Разбор
тренировочного задания урока 5.
6.*Дано целое число k (1 <= k <= 365). Присвоить
целочисленной величине n значение 1, 2,...,6 или 0 в
зависимости от того, на какой день недели
(понедельник, вторник, ..., суббота или
воскресенье) приходится k-й день года, в котором 1
января - понедельник.
Так как 1 января приходится на понедельник, то
легко определить на какой день приходится k-й
день года. Для этого достаточно разделить нацело
на 7, а полученный остаток и будет днем недели.
Program prim_5;
Var n,k:integer;
Begin
Write('введите день года');
Readln(k);
n:=k mod 7;
Writeln(k,' день года - это ', n,' день недели ');
Readln
End.
Желаю успехов!
Ганилова Татьяна Евгеньевна school6@rikt.ru