Вопрос задан 24.07.2023 в 02:41. Предмет Информатика. Спрашивает Белоусов Данил.

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые

значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит второй максимум массива (элемент, который в отсортированном по невозрастанию массиве стоял бы вторым). Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них. const N = 30; var a: array [1..N] of integer; i, k, max, max2: integer; begin for i: =1 to N do readln(a[i]); ... end.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Саваровский Илья.

program p1;

uses crt;   вывод окошка

const N = 30;

var a: array [1..N] of integer;

i, max, max2 :integer;

begin

 

 for i:=1 to N do begin  вывод элементов массива с помощью рандома

a[i]:=  random (100);

 write( a[i]:4);

 end;

         writeln;

   max:= a[1];  принимаем первый элемент массива за макс

   max2:= a[1];  принимаем первый элемент массива за макс

   

  for i:=1 to N do begin              находим первый max                                                                  

    if  max<a[i] then

      max:= a[i];

      end;

       

      for i:=1 to N do begin                            находим второй max2

        if (max2<a[i]) and ( a[i]<> max) then

         max2:= a[i];

         end;

         

         writeln('max=',max);

         writeln('max2=',max2);

         end.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для нахождения второго максимума в массиве можно воспользоваться простым алгоритмом без использования дополнительных переменных. В коде ниже представлено решение на языке программирования Pascal:

pascal
const N = 30; var a: array [1..N] of integer; i, max, max2: integer; begin for i := 1 to N do readln(a[i]); { Находим первый максимум в массиве } max := a[1]; for i := 2 to N do begin if a[i] > max then max := a[i]; end; { Находим второй максимум в массиве } max2 := a[1]; for i := 2 to N do begin if (a[i] > max2) and (a[i] < max) then max2 := a[i]; end; writeln('Второй максимум массива: ', max2); end.

Описание алгоритма:

  1. Сначала находим первый максимум в массиве. Для этого проходим по всем элементам массива и сохраняем максимальное значение в переменную max.
  2. Затем ищем второй максимум. Для этого проходим снова по всем элементам массива и сравниваем их с max2 и max. Если элемент больше max2 и меньше max, то обновляем значение max2.
  3. После окончания второго цикла, max2 будет содержать второй максимум массива.
  4. Выводим найденное значение на экран.

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

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос