Создание сайта учителя и воспитателя
Публикация авторских работ и материалов
Свидетельство о публикации на сайте

"Методика решения задач № 24 по информатике ГИА-11"

методическая разработка

Автор: Бирюкова Елена Александровна, учитель информатики, МБОУ СОШ № 19, город Кореновск, Краснодарский край



В раздел основное полное образование




Методика

решения

задач 24

ГИА-11


Задача 1 Требовалось написать программу, при выполнении которой с

клавиатуры считывается натуральное число N, не превосходящее 10

9

,

и выводится максимальная цифра этого числа. Программист

торопился и написал программу неправильно.

var N: longint;

digit, max_digit: integer;

begin

readln(N);

max_digit := 9;

while N >= 10 do

begin

digit := N mod 10;

if digit > max_digit then

max_digit := digit;

N := N div 10;

end;

writeln(max_digit);

end.


1. Напишите, что выведет эта программа при вводе числа

423.

2. Найдите все ошибки в этой программе (их может быть

одна или несколько).

Для каждой ошибки:

1)

выпишите строку , в которой сделана ошибка;

2) укажите , как исправить ошибку, – приведите правильный

вариант строки .

Обратите внимание, что требуется найти ошибки в

имеющейся программе , а не написать свою, возможно,

использующую другой алгоритм решения .

Исправление ошибки должно затрагивать только строку , в

которой находится ошибка.
Последовательно выполните следующее.

var N: longint;

digit, max_digit: integer;

begin

readln(N);

max_digit := 9;

while N >= 10 do

begin

digit := N mod 10;

if digit > max_digit then

max_digit := digit;

N := N div 10;

end;

writeln(max_digit);

end.

N:=423; max_digit := 9;

1) 423>10, да

digit :=423 mod 10=3;

3>9, нет

N:=423 div 10=42;

2) 42>10, да

digit :=42 mod 10=2;

2>9, нет

N:=42 div 10=4;

3) 4>10 нет, цикл закончен

Ответ: max_digit = 9
Вывод программы при вводе числа 423.

var N: longint;

digit, max_digit: integer;

begin

readln(N);



while N >= 10 do

begin

digit := N mod 10;

if digit > max_digit then

max_digit := digit;

N := N div 10;

end;

writeln(max_digit);

end.

1 ошибка

За максимальный элемент

принимаем всегда

минимальное число
!
max_digit := 0;

max_digit := 9;

max_digit := 9;

max_digit := 0;


2 ошибка

var N: longint;

digit, max_digit: integer;

begin

readln(N);

max_digit := 9;



begin

digit := N mod 10;

if digit > max_digit then

max_digit := digit;

N := N div 10;

end;

writeln(max_digit);

end.

Не считывается

старшая цифра числа

Например, N=856

Когда N станет равным

8, цикл закончит свою

работу!

while N >= 10 do

while N > 0 do

while N >= 10 do

while N > 0 do


Задача 2

Требовалось написать программу, при выполнении которой

с клавиатуры считывается натуральное число N, не превосходящее

10

9

, и выводится количество цифр этого числа. Программист

торопился и написал программу неправильно:

var N: longint;

count: integer;

begin

readln(N);

count := 1;

while N > 1 do

begin

count := count + 1;

N := N div 10;

end;

writeln(count);

end.


Определите, что выведет программа при вводе числа

123.

Укажите одно число, для которого программа выводит

неверный результат.

Найдите все ошибки в этой программе (их может быть

одна или несколько).

Для каждой ошибки:

выпишите строку, в которой сделана ошибка;

укажите, как надо исправить ошибку - приведите

правильный вариант строки.

Обратите внимание, что требуется найти ошибки в

имеющейся программе, а не написать свою,

возможно, имеющую другой алгоритм решения.

Исправление ошибки должно затрагивать только

строку, в которой находится ошибка.

Последовательно выполните

следующее:


var N: longint;

count: integer;

begin

readln(N);

count:= 1;

while N > 1 do

begin

count:= count + 1;

N:= N div 10;

end;

writeln(count);

end.

N:=123; count :=1;

123>1, да

count :=2;

N:=123 div 10=12;

12>1, да

count :=3;

N:=12 div 10=1;

1>1, нет

Цикл завершён!

Ответ: count=3;

Ответ правильный!
Вывод программы при вводе числа 123.

Укажите одно число, для которого программа

выводит неверный результат.

var N: longint;

count: integer;

begin

readln(N);

count:= 1;

while N > 1 do

begin

count:= count + 1;

N:= N div 10;

end;

writeln(count);

end.

N:=223; count :=1;

223>1, да count :=2;

N:=223 div 10=22;

22>1, да count :=3;

N:=22 div 10=2;

2>1, да count :=4;

N:=2 div 10=0;

0>1, нет

Цикл завершён!

Ответ: count=4;

Ответ неправильный!


var N: longint;

count: integer;

begin

readln(N);

while do

begin

count:= count + 1;

N:= N div 10;

end;

writeln(count);

end.

count

:= 1;

count:= 0;

1 ОШИБКА

count:= 1;

count:= 0;

N > 1

N > 0

2 ОШИБКА

N > 1;

N > 0;

ОШИБКИ

Задача 3. Написать программу, при выполнении которой с клавиатуры считывается два натуральных числа N и M одинаковой размерности, не превосходящие 10 9 . Программа должна вычислить сумму старших разрядов этих чисел, сумму их младших разрядов, вывести наибольшую из этих сумм. Если суммы одинаковы, то одну из них. Программист торопился и написал программу неправильно.
var N, M: longint; S: integer;

begin

readln(N, M);

S := (N + M) mod 10;

while N > 0 do

begin

N := N div 10;



while M > 0 do



M := M div 10;

end;

If S>N + M then writeln(S) else

writeln(M+N)

;

end.

Вывод программы при вводе числа 517 и 834.
var N, M: longint; S: integer;

begin

readln(N, M);

S := (N + M) mod 10;

while N > 0 do

begin

N := N div 10;

while M > 10 do

M := M div 10;

end;

If S>N + M then writeln(S)

else writeln(M+N) ;

end.

N:=517; M:=834;

S:=(517 + 834) mod 10=1;

517>0, да N :=517 div 10=51;

834>10, да M := 834 div

10=83;

83>10, да M := 83 div 10=8;

8>10, нет M :=8;

51>0, да N :=51 div 10=5;

5>0, да N :=5 div 10=0;

S>N + M

1>0+8, нет M+N=8;

ОТВЕТ: 8


ОШИБКИ

var N, M: longint; S: integer;

begin

readln(N, M);

begin

N := N div 10;

while M > 10 do

M := M div 10;

end;

If S>N + M then writeln(S)

else writeln(M+N) ;

end.

S := N mod 10+ M mod 10 ;

S := (N + M) mod 10 ;

while N > 10 do

while N > 0 do

Сумма младших разрядов чисел N и

M

(487+516) mod 10=3

487 mod 10 + 516 mod 10

=7 + 6=13
Цикл работает пока N>10, тогда в N остаётся старший разряд, а не 0. Для эффективности работы цикл с M можно убрать, т.к. M и N одинаковой размерности.


В раздел основное полное образование