Задание 2 Вариант 3 Самостоятельная работа 5 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)
Решение #1
![Изображение ответа 2. Напишите программу. Известны факты выпадения осадков за каждый день лета (0 — нет осадков, 1 — есть осадки). Найдите первый самый продолжительный участок лета без... Изображение 2. Напишите программу. Известны факты выпадения осадков за каждый день лета (0 — нет осадков, 1 — есть осадки). Найдите первый самый продолжительный участок лета без...](/reshebniki/informatika/11/WBbosova/images1/sam5/3/2.png)
![Дополнительное изображение Дополнительное изображение](/reshebniki/informatika/11/WBbosova/images1/sam5/3/2-.png)
![Загрузка...](/pic/zapret_pravo.png)
Рассмотрим вариант решения задания из учебника Босова, Босова, Аквилянов 11 класс, Бином:
2. Напишите программу. Известны факты выпадения осадков за каждый день лета (0 — нет осадков, 1 — есть осадки). Найдите первый самый продолжительный участок лета без осадков, а также месяц начала и месяц конца этого участка.
Запишите текст программы.
program s5_v3_2;
const
n = 92; //июнь - 30, июль - 31, август - 31
var
c: array[1..n] of integer;
i, j, l, lmax, k2, k1m, k2m: integer;
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
//если встретился 0 и следующий элемент не последний
if (c[i] = 0) and (i + 1 < n) then
begin
l := 1; j := i + 1;
//если следующий тоже 0
while (c[j] = 0) and (j < n) do
begin
l := l + 1;
j := j + 1;
end;
//день завершения текущего периода без осадков
k2 := j - 1;
if l > lmax then
begin
lmax := l;
//последний день максимальной продолжительности без осадков
k2m := k2;
//первый день максимальной продолжительности без осадков
k1m := k2m - lmax + 1;
end;
l := 0; i := j;
end;
//если следующий не 0
i := i + 1
end;
writeln('lmax=', lmax, ' k1m=', k1m, ' k2m=', k2m);
write('Месяц начала максимального периода без осадков');
if k1m <= 30 then writeln(' июнь')
else if (k1m >= 31) and (k1m <= 61) then writeln(' июль')
else if (k1m >= 62) then writeln(' август');
write('Месяц завершения максимального периода без осадков');
if k2m <= 30 then writeln(' июнь')
else if (k2m >= 31) and (k2m <= 61) then writeln(' июль')
else if (k2m >= 62) then writeln(' август')
end.
В программе есть дополнительные выводы промежуточных значений для проверки правильности работы программы. При желании можно их закомментировать – поставить перед ними //.
*размещая тексты в комментариях ниже, вы автоматически соглашаетесь с пользовательским соглашением