Просмотр содержимого документа
«Задание 15. Поиск ошибок в программах»
Задание 15. Поиск ошибок в программах.
Доделать Задание 12.
3064, 3069, 3072, 115, 117, 118. Функции создавать не нужно, пишем программы обычным образом.
В тетради следующие задания.
24-58.На обработку поступает последовательность из четырёх целых чисел. Нужно написать программу, которая выводит на экран количество неотрицательных чисел последовательности и их произведение. Если неотрицательных чисел нет, требуется вывести на экран «NO». Известно, что вводимые числа по абсолютной величине не превышают 10. Программист написал программу неправильно.
var p,i,x,count: integer;
begin
count := 0;
p := 0;
for i := 1 to 4 do begin
read (x);
if x = 0 then begin
p := p*x;
count := count+1
end
end;
if count 0 then begin
writeln(х);
writeln(p);
end
else
writeln('NO')
end.
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе чисел -5 2 1 3.
2. Приведите пример такой последовательности, содержащей хотя бы одно неотрицательное число, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
24-52.Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится сумма цифр этого числа. Программист торопился и написал программу неправильно:
var N: longint;
sum, d: integer;
begin
readln(N);
sum := 1;
while N 0 do begin
d := N mod 10;
N := N div 10;
sum := sum + 1;
end;
writeln(sum);
end.
Последовательно выполните следующее.
Напишите, что выведет эта программа при вводе числа 256.
Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт правильный результат.
Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
24-49.Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, которое получается из N после удаления всех единиц; порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 952025. Число, в котором все цифры – единицы и нули, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно. Программист торопился и написал программу неправильно.
var N, R, T: longint;
d: integer;
begin
readln(N);
R:=0;
T:=1;
while N0 do begin
d := N mod 10;
if d1 then begin
R := R + d*T;
T := T+1
end;
N := N div 10;
end;
writeln(T);
end.
Последовательно выполните следующее.
Напишите, что выведет эта программа при вводе числа 314.
Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) Выпишите строку, в которой сделана ошибка.
2) Укажите, как исправить ошибку – приведите правильный вариант
строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.