319.59K
Categories: programmingprogramming informaticsinformatics

Алгоритм разбора целого числа на цифры. Часть 11

1.

КУРС «ИНФОРМАТИКА»
Часть 11. Алгоритм разбора целого числа
на цифры
2020 – 2021 УЧЕБНЫЙ ГОД

2.

Операции div и mod
7 div 3 = 2
8 div 2 = 4
1 div 3 = 0
7 mod 3 = 1
10 mod 4 = 2
3 mod 5 = 3
mod 10 – остаток от деления на 10 любого числа,
позволяет определить младшую (правую) цифру числа:
137 mod 10 = 7
2134 mod 10 = 4
div 10 – целая часть от деления
Операции, определяющей старшую цифру числа нет!
2

3.

3
Сумма цифр числа
Программный код
var x,s,m: integer;
begin
writeln(’введите число ’);
readln(x);
s:=0;
while x>0 do begin
m:= x mod 10;
s:=s+m;
x:= x div 10;
end;
writeln(s);
end.
Пример
Найти сумму
цифр числа 123
Трассировка
алгоритма

4.

4
Сумма цифр числа
Программный код
var x,s: integer;
begin
writeln(’введите число ’);
readln(x);
s:=0;
while x>0 do begin
s:=s+ x mod 10;
x:= x div 10;
end;
writeln(s);
end.
Пример
Найти сумму
цифр числа 123
Трассировка
алгоритма

5.

Количество четных цифр числа
var x,s: integer;
begin
writeln(’введите число ’);
readln(x);
k:=0;
while x>0 do begin
if x mod 2 = 0 then
k:=k+1;
можно проверять
x:= x div 10;
НА ЧЕТНОСТЬ
end;
не последнюю цифру,
writeln(k);
а все число
end.
(x mod 10)mod 2 x mod 2
5

6.

Количество цифр числа, кратных 3
var x,s: integer;
begin
writeln(’введите число ’);
readln(x);
k:=0;
это правильно
while x>0 do begin
if (x mod 10) mod 3= 0 then
k:=k+1;
x:= x div 10;
нельзя проверять на
end;
кратность не последнюю
writeln(k);
цифру, а все число
end.
(x mod 10)mod 3 ≠ x mod 3
(53 mod 10)mod 3 ≠ 53 mod 3
6

7.

КУРС «ИНФОРМАТИКА»
Часть 12. Подготовка
к контрольной работе № 2
2020 – 2021 УЧЕБНЫЙ ГОД

8.

8
Пример задачи 1
1.1. Составить алгоритм и написать (с использованием функции)
программу подсчета количества натуральных чисел, принадлежащих
интервалу (a , b), у которых количество четных цифр меньше
количества нечетных цифр.
a
120
k=0
121: k0=1
122: k0=2
123: k0=1
124: k0=2
b
121
k1=2
k1=1
k1=2
k1=1
122
122
k0<k1
k=1
k0<k1
k=2
124
125

9.

Задача 1.1
1. Ввод a и b.
2. k:=0 – общее количество подходящих чисел
3. Цикл по интервалу (a,b)
3.1. Дублируем переменную цикла
3.2. k0 – счетчик четных, k0 – счетчик нечетных
3.3. Цикл по числу
3.3.1. Проверка четности
3.3.1.1. Увеличение счетчиков
3.3.2. Деление на 10
3.4. Проверка условия задачи: k0 < k1
3.4.1. Увеличение счетчика k
4. Вывод k
9

10.

Задача 1.1
function test (x:integer):boolean;
var k0,k1:integer;
begin
k0:=0;
k1:=0;
while x>0 do begin
if x mod 2 = 0 then inc(k0)
else inc(k1);
x:=x div 10;
end;
result:=k0<k1;
end;
10

11.

Задача 1.1
11
function alg (a,b:integer):integer;
var i,k:integer;
begin
k:=0;
for i:=a+1 to b-1 do
if test(i) then inc(k);
result:=k;
end;
var a,b: integer;
begin
write('Вв. границы: '); read(a,b);
write('Количество = ', alg(a,b));
end.

12.

12
Пример задачи 1
1.2. Составить алгоритм и написать (с использованием функции)
программу подсчета количества натуральных чисел, принадлежащих
отрезку [a , b], у которых старшая цифра равна заданной цифре, а
младшая четная.
a
1200
b
1201
1202
z=1
1200: старшая цифра = 1,
1201: старшая цифра = 1,
1202: старшая цифра = 1,
1203: старшая цифра = 1,
...
...
2124
младшая четная
младшая нечетная
младшая четная
младшая нечетная
2125

13.

Задача 1.2
13
1. Ввод a, b (границы) и z (заданное число).
2. k:=0 – общее количество подходящих чисел
3. Цикл по отрезку [a,b]
3.1. Проверка условия четности числа i
3.1.1. Дублируем переменную цикла
3.1.2. Цикл по числу (поиск старшей цифры)
3.1.2.1. Деление на 10
3.1.3. Проверка условия задачи: x = z
3.1.3.1 Увеличение счетчика k
4. Вывод k

14.

Задача 1.2
function test (x,z:integer):boolean;
begin
if x mod 2 = 0 then begin
while x>9 do
x:=x div 10;
result:=x=z;
end
else
result:=false;
end;
14

15.

Задача 1.2
15
function alg (a,b,z:integer):integer;
var i,k:integer;
begin
k:=0;
for i:=a to b do
if test(i,z) then inc(k);
result:=k;
end;
var a,b,z: integer;
begin
write('Вв. границы и цифру: ');
readln(a,b,z);
write('Количество= ', alg(a,b,z));
end.

16.

Пример задачи 2
2.1 Написать (с использованием функции) программу подсчета
количества четных чисел Фибоначчи, принадлежащих отрезку [a , b],
у которых сумма цифр – четная.
function test (x:integer):boolean;
var s:integer;
begin
if x mod 2 = 0 then begin
s:=0;
while x>0 do begin
s:=s + x mod 10; x:= x div 10;
end;
result:=(s mod 2=0);
end
else result:=false;
end;
16

17.

Пример задачи 2
Числа Фибоначчи
1
2
3
5
f1 f2
f
8
13 ...
function fib (a,b:integer):integer;
var f1,f2,f,k:integer;
begin
f1:=1; f2:=2; k:=0;
while f1<=b do begin
if (f1>=a) and test(f1) then
k:=k+1;
f:=f1+f2; f1:=f2; f2:=f;
end;
result:=k;
end;
17

18.

Пример задачи 2
var a,b: integer;
begin
write('Вв. границы: ');
readln(a,b);
write('Количество= ', fib(a,b));
end.
18

19.

19
Пример задачи 2
2.2 Написать (с использованием функции) программу подсчета
количества чисел Фибоначчи, принадлежащих отрезку [a , b], в
которых все цифры одинаковые.
1
2
3
5
8
13
21
function test (x:integer):boolean;
var m:integer;
begin
m:= x mod 10;
while (x>0)and(x mod 10 = m) do
x:= x div 10;
result:=(x=0);
end;
34
55
89...
m = 2
22222
x = 0
22122
x <> 0

20.

Пример задачи 2
function fib (a,b:integer):integer;
var f1,f2,f,k:integer;
begin
f1:=1; f2:=2; k:=0;
while f1<=b do begin
if (f1>=a) and test(f1) then
k:=k+1;
f:=f1+f2; f1:=f2; f2:=f;
end;
result:=k;
end;
var a,b: integer;
begin
write('Вв. границы: '); readln(a,b);
write('Количество= ', fib(a,b));
end.
20

21.

Дополнительные задачи
для подготовки к КР № 2
1
1
Составить алгоритм и написать (с
2
Написать (с использованием функции)
использованием функции) программу подсчета
программу подсчета количества четных чисел
количества натуральных чисел, принадлежащих
Фибоначчи, принадлежащих отрезку [a , b], у
интервалу (a , b), у которых количество цифр, не
которых количество четных цифр кратно
кратных 3, равно заданному числу.
количеству нечетных.
Составить алгоритм и написать (с
2
Написать (с использованием функции)
использованием функции) программу подсчета
программу подсчета количества чисел
количества натуральных чисел, принадлежащих
Фибоначчи, принадлежащих отрезку (a , b], у
интервалу [a , b), в которых сумма цифр
которых сумма младшей и старшей цифр
нечетная и некратна младшей цифре.
кратна заданному числу
21

22.

Источники
Обзорный материал (данная презентация)
22
English     Русский Rules