693.06K
Категория: ПрограммированиеПрограммирование

Решение задач на одномерные массивы

1.

2.

var x,cnt: integer;
begin
readln(x);
cnt := 0;
while x > 0 do
begin
cnt:=cnt + x mod 2;
x := x div 10
end;
writeln(cnt)
end.
Требовалось
написать
программу,
при
выполнении
которой
с
клавиатуры
считывается натуральное число
x, не превосходящее 1000, и
выводится количество значащих
цифр в двоичной записи этого
числа. Программист торопился и
написал программу неправильно.
2

3.

ЗАПОМНИТЕ!
Div – целая часть от деления
Mod – остаток от деления.
Шаг
x
(1)
15
var x,cnt: integer;
begin
readln(x);
cnt := 0;
while x > 0 do
begin
cnt:=cnt + x mod 2;
x := x div 10;
end;
writeln(cnt);
end.
(2)
Проверка
условия
0
15>0 да
(3)
0+1=1
(4)
(5)
1
1 >0 да
(6)
1+1=2
(7)
(8)
cnt
0
(9)
0>0 нет
Выход из цикла программы
Ответ: 2
3

4.

Введем с клавиатуры число 1
var x,cnt: integer;
begin
readln(x);
cnt := 0;
while x > 0 do
begin
cnt:=cnt + x mod 2;
x := x div 10;
end;
writeln(cnt);
end.
Шаг
x
(1)
(2)
1
1>0
(4)
(6)
cnt
0
(3)
(5)
Проверка
условия
да
0+1=1
0
0>0 нет
Выход из цикла программы
Ответ: 1
4

5.

var x,cnt: integer;
begin
readln(x);
cnt := 0;
while x > 0 do
begin
cnt:=cnt + x mod 2;
x := x div 10;
end;
writeln(cnt);
end.
Меняем тип переменной:
x: 0..1000;
(т.к.по условию сказано, что x –
натуральное число)
Меняем тип переменной:
cnt: word;
(т.к.по условию cnt отвечает за количество,
оно не может быть отрицательным)
Неверный подсчёт количества цифр.
Программа не учитывает значащие нули.
cnt:=cnt + x mod 2;
Исправляем:
cnt:=cnt + 1;
Неверная обработка числа x в цикле.
x := x div 10;
Исправляем:
x := x div 2;
5

6.

var cnt: word;
x: 0..1000;
begin
readln(x);
cnt := 0;
while x > 0 do
begin
cnt:=cnt + 1;
x := x div 2;
end;
writeln(cnt);
end.
6

7.

Шаг
x
(1)
15
Проверка
условия
(2)
var cnt: word;
x: 0..1000;
begin
readln(x);
cnt := 0;
while x > 0 do
begin
cnt:=cnt + 1;
x := x div 2;
end;
writeln(cnt);
end.
ЗАПОМНИТЕ!
Div – целая часть от деления
0
(3)
15>0
да
(4)
(5)
0+1=1
7
(6)
7>0
да
(7)
(8)
1+1=2
3
(9)
3>0
да
(10)
(11)
2+1=3
1
(12)
1>0
да
(13)
(14)
(15)
cnt
3+1=4
0
0>0
нет
Выход из цикла программы
Ответ: 4
7
English     Русский Правила