Задание 10 Вариант 3 Самостоятельная работа 4 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)
Запишите текст программы.
program s4_v3_10;
const
n = 20;
var
c: array[1..n] of integer;
i, j, l, lmax: integer; // l – текущее количество подряд идущих 0
begin
writeln(‘ввод массива’);
randomize;
for i := 1 to n do
begin
c[i] := random(2);//получается массив из 1 и 0
write(c[i], ‘ ‘)
end;
writeln;
lmax := 0; i := 1;
while i < = n do
begin
if (c[i] = 0)and (i+1 < n) then //если встретился 0 и следующий элемент не последний
begin
l := 1; j := i + 1;
while (c[j] = 0) and (j < n) do //если следующий тоже 0
begin
l := l + 1;
j := j + 1;
end;
if l > lmax then lmax := l;
l := 0; i := j;
end;
i := i + 1//если следующий не 0
end;
writeln(‘lmax=’, lmax)
end.
Нужно просмотреть массив и найти максимальную длину подряд идущих нулей. Для этого удобно хранить:
- l — длину текущей цепочки нулей;
- lmax — длину самой большой найденной цепочки.
Если очередной элемент равен $$0$$, увеличиваем l. Если встретилась единица, сравниваем l с lmax, при необходимости обновляем максимум и обнуляем l.
После просмотра всех элементов нужно ещё раз проверить последнюю цепочку нулей, если массив закончился на нуле.
program s4_v3_10;
const
n = 20;
var
c: array[1..n] of integer;
i, l, lmax: integer;
begin
randomize;
for i := 1 to n do
begin
c[i] := random(2);
write(c[i], ‘ ‘);
end;
writeln;l := 0;
lmax := 0;
for i := 1 to n do
begin
if c[i] = 0 then
l := l + 1
else
begin
if l > lmax then lmax := l;
l := 0;
end;
end;
if l > lmax then lmax := l;writeln(‘lmax = ‘, lmax);
end.
Ответ: программа, находящая длину самой большой цепочки из нулей, приведена выше.