1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
(Сам и контр)
Задание 2 Вариант 3 Самостоятельная работа 5 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)
Босова, Босова, Аквилянов
11 класс
Автор
Босова, Босова, Аквилянов

Задание 2 Вариант 3 Самостоятельная работа 5 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)

Задача

Запишите текст программы.
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.
В программе есть дополнительные выводы промежуточных значений для проверки правильности работы программы. При желании можно их закомментировать – поставить перед ними //.

Подробный ответ

Нужно просмотреть массив из $$92$$ элементов, где $$0$$ означает день без осадков, а $$1$$ — день с осадками. Затем найти самый длинный подряд идущий участок из нулей и определить, в каком месяце он начинается и заканчивается.

Для этого удобно:

  • сгенерировать или считать массив значений;
  • последовательно просматривать элементы массива;
  • при встрече $$0$$ считать длину текущего участка без осадков;
  • если найденный участок длиннее предыдущего максимума, запомнить его длину, первый и последний дни;
  • по номерам дней определить месяц: июнь — $$1\ldots 30$$, июль — $$31\ldots 61$$, август — $$62\ldots 92$$.

Текст программы:

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
    if (c[i] = 0) and (i + 1 < n) then
    begin
      l := 1; j := i + 1;
      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;
    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.

В программе есть дополнительные выводы промежуточных значений для проверки правильности работы. При необходимости их можно закомментировать.

Ответ

Программа находит самый длинный подряд идущий участок без осадков и определяет месяц его начала и окончания.



Общая оценка
4.9 / 5
Другие учебники
Другие предметы