Дан целочисленный массив из 40 элементов. Элементы массива могут принимать произвольные значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит значение второго максимума (элемента, который в отсортированном по невозрастанию массиве стоял бы вторым).
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
| Бэйсик | Паскаль |
|---|---|
N = 40 DIM A (N) AS INTEGER DIM I, K, MAX, MAX2 AS INTEGER FOR I = 1 TO N INPUT A (I) NEXT I ... END
| const N = 40; var a: array [1..N] of integer; i, k, max, max2: integer; begin for i: =1 to N do readln(a[i]); ... end.
|
| Си++ | Алгоритмический язык |
#include <iostream> using namespace std; #define N 40 int main(void) {int a [N]; int i, k, max, max2 ; for (i = 0; i < N; i++) cin >> a[i]; } | алг нач цел N = 40 целтаб а[1:N] цел i, k, MAX, МАХ2 нц для i от 1 до N ввод a[i] кц ... кон |
| Естественный язык | |
Объявляем массив А из 40 элементов. Объявляем целочисленные переменные I, К, MAX, МАХ2. В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й. ... | |
| Python | |
# допускается также # использовать # целочисленные переменные k, max, max2 a = [] n = 40 for i in range(0, n): a.append(int(input())) ... | |
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом случае вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке).
| ПАСКАЛЬ | БЕЙСИК |
| max:=а [1] ; mах2 : = а [2] ; if max < max2 then begin max : = a [2] ; max2 := a [1] end; for i : = 3 to N do if a[i] > max then begin max2 : = max; max := a [i] end else if a[i] > max2 then max2 := a[i]; writeln(max2); | MAX = А(1) МАХ2 = А(2) IF MAX < MAX2 THEN MAX = A(2) MAX2 = A(1) ENDIF FOR I = 3 TO N IF A(I) > MAX THEN MAX2 = MAX MAX = A (I) ELSE IF A(I) > MAX2 THEN MAX2 = A(I) ENDIF ENDIF , NEXT I PRINT MAX2 |
| СИ | Алгоритмический язык |
| mах = а [0] ; mах2 = а [1] ; if (max < max2) { max = a [1] ; max2 = a [0] ; } for(i = 2; i < N; i++) if(a[i] > max) { max 2 = max; max = a [i]; } else if (a [i] > max2 ) max2 = a [i] ; cout « max2 « endl; | МАХ := а [1] MAX2 := а [2] если MAX < МАХ2 то МАХ := а [2 ] МАХ2 := а [1] все нц для i от 3 до N если а[i]>МАХ то МАХ2 :"= МАХ МАХ := a [i] иначе если a[i]>MAX2 то МАХ2 := a [i] все все кц вывод МАХ2 |
| Естественный язык |
| Записываем в переменную МАХ начальное значение, равное значению 1-го элемента массива. В переменную МАХ2 записываем начальное значение, равное значению 2-го элемента массива. Если значение МАХ оказывается меньше значения МАХ2, то в переменную МАХ записываем значение 2-го элемента массива, а в переменную МАХ — значение 1-го элемента массива. В цикле перебираем все элементы с 3-го до 40-го. Если значение текущего элемента массива оказывается больше значения переменной МАХ, то в переменную МАХ2 записываем значение переменной МАХ, а в переменную МАХ записываем значение текущего элемента массива. Иначе, если значение текущего элемента массива оказывается больше значения переменной МАХ2, записываем в переменную МАХ2 значение текущего элемента. Выводим значение переменной МАХ2. |

