Номер §1.4 ПМ 12

ГДЗ по информатике 9 класс, Босова 2023, страница 51

§. ПМ Массивы и последовательности целых чисел

Пример 2. Камера наблюдения, установленная в населённом пункте, регистрирует в автоматическом режиме скорость проезжающих мимо неё автомобилей, округляя полученные значения до целых чисел. Программа, которую вам необходимо составить, получает на вход значения скорости проехавших N⩽100N \leqslant 100 автомобилей. Программа должна анализировать скорость каждого автомобиля и один раз в сутки выводить на экран следующую информацию: 1) количество автомобилей, проехавших со скоростью, превышающей 60 км/ч; 2) максимальную скорость проехавших автомобилей; 3) количество автомобилей, проехавших с максимальной скоростью; 4) среднюю скорость проехавших автомобилей; 5) количество автомобилей, проехавших со скоростью, ниже средней; 6) для каждого проехавшего автомобиля его скорость и комментарий: «Нарушитель», если скорость превышает 60 км/ч, но не превышает 250 км/ч; «Дисциплинированный водитель», если скорость от 30 до 60 км/ч; «Тише едешь — дальше будешь!», если скорость меньше 30 км/ч; «Ошибка», если значение скорости меньше 1 или больше 250. Для получения каких из требуемых результатов можно организовать обработку последовательности? Какие результаты можно получить, организовав обработку массива? Напишите программу, решающую поставленную задачу.

Решение

При обработке последовательности очередное значение скорости сразу заменяет предыдущее. Поэтому за один проход можно накапливать число скоростей больше , сумму скоростей и текущий максимум. Если очередная скорость больше максимума, счётчик автомобилей с максимумом становится равным ; если равна — увеличивается на . После ввода всех значений сумма, делённая на число автомобилей, даёт среднюю скорость. Так получают результаты – без хранения всех скоростей.

Для результата нужно снова сравнить каждую скорость с уже вычисленным средним. Для вывода отчёта после ввода всех данных также нужны все скорости. Поэтому сохраняем их в массиве и делаем второй проход. Некорректные значения отмечаем словом «Ошибка» и не включаем в статистику: это предотвращает искажение средней и максимума. Если корректных значений нет, среднюю вычислять нельзя, поскольку произошло бы деление на нуль.

program Speeds;
var
  A: array[..] of integer;
  N, i, countValid, over, maxSpeed, countMax,
  belowAverage: integer;
  sumSpeed: longint;
  average: real;
begin
  readln(N);
  for i :=  to N do readln(A[i]);
  countValid := ;
  over := ;
  countMax := ;
  maxSpeed := ;
  sumSpeed := ;
  for i :=  to N do
    if (A[i] >= ) and (A[i] <= ) then
    begin
      countValid := countValid + ;
      sumSpeed := sumSpeed + A[i];
      if A[i] >  then over := over + ;
      if A[i] > maxSpeed then
      begin
        maxSpeed := A[i];
        countMax := ;
      end
      else if A[i] = maxSpeed then
        countMax := countMax + ;
    end;
  writeln('Быстрее  км/ч: ', over);
  if countValid >  then
  begin
    average := sumSpeed / countValid;
    belowAverage := ;
    for i :=  to N do
      if (A[i] >= ) and (A[i] <= )
         and (A[i] < average) then
        belowAverage := belowAverage + ;
    writeln('Максимальная скорость: ', maxSpeed);
    writeln('Автомобилей с максимальной скоростью: ', countMax);
    writeln('Средняя скорость: ', average::);
    writeln('Медленнее средней: ', belowAverage);
  end
  else
    writeln('Корректных скоростей нет');
  for i :=  to N do
  begin
    write('Автомобиль ', i, ': ', A[i], ' км/ч — ');
    if (A[i] < ) or (A[i] > ) then
      writeln('Ошибка')
    else if A[i] >  then
      writeln('Нарушитель')
    else if A[i] >=  then
      writeln('Дисциплинированный водитель')
    else
      writeln('Тише едешь — дальше будешь!');
  end;
end.

Первый цикл сохраняет скорости; второй получает сумму, максимум и счётчики, а третий сравнивает элементы с известной средней. Последний цикл выдаёт комментарии в исходном порядке. Условия проверяются от ошибки к диапазонам скоростей, поэтому каждое значение получает ровно один комментарий.

Ответ

Последовательности достаточно для результатов –. Для результатов – после ввода всех скоростей нужен сохранённый массив; приведённая программа выдаёт все шесть результатов.

Помогло?

Нет твоего задания?Сфоткай, и ДЗмэн решит за пару секунд.

Решить по фото