Исправление ошибок в программах
Внешний вид
Максимум
[править]На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество нечётных чисел в исходной последовательности и максимальное нечётное число. Если нечётных чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Вот она:
const n = 4;
var i, x: integer;
var maximum, count: integer;
begin
count := 0;
maximum := 999; // <- ошибка
for i := 1 to n do begin
read(x);
if x mod 2 <> 0 then begin
count := count + 1;
if x > maximum then maximum := i // <- ошибка
end
end;
if count > 0 then begin
writeln(count);
writeln(maximum)
end
else writeln('NO')
end.
Решение:
const
n = 4;
var
i, x: integer;
var
maximum, count: integer;
begin
count := 0;
maximum := 0; // <-
for i := 1 to n do
begin
read(x);
if x mod 2 <> 0 then begin
count := count + 1;
if x > maximum then maximum := x // <-
end
end;
if count > 0 then begin
writeln(count);
writeln(maximum)
end
else writeln('NO')
end.
Сумма чётных цифр
[править]Требовалось написать программу, которая вводит с клавиатуры натуральное число N, не превышающее 109, и выводит сумму чётных цифр в десятичной записи этого числа или 0, если чётных цифр нет. Программист торопился и написал программу неправильно. Вот она:
var N: longint;
s: integer;
begin
readln(N);
s := 0;
while N > 1 do begin // <- ошибка
if N mod 2 = 0 then begin // <- ошибка
s := N mod 10; // <- ошибка
end;
N := N div 10;
end;
write(s);
end.
Решение:
var
N: longint;
s: integer;
begin
readln(N);
s := 0;
while N > 0 do // <-
begin
if N mod 10 mod 2 = 0 then begin // <-
Inc(s, N mod 10) // <-
end;
N := N div 10;
end;
write(s);
end.