Решение задач
Разбор задачи C2 (демо ЕГЭ 2006)
Опишите на русском языке или на одном из языков программирования алгоритм поиска второго по величине (т.е. следующего по величине за максимальным) элемента в числовом массиве из 30 различных элементов.
Решение:
Программа написана на языках:
- Паскаль (среда разработки Turbo Pascal 7.0),
- Бейсик (среда разработки Quick Basic 4.5),
- Алгоритмический язык (среда разработки Кумир 1.9.0),
- Си (среда разработки Borland C++ 3.1).
Напротив названия языка программирования в скобках содержатся ссылки на скачку исходников и ехе (исполняемых файлов).
Паскаль (исходник+exe-файл) | Бейсик (исходник) |
---|---|
const N=30; var mas:array[1..N] of real; max1, max2: real; i: integer; begin for i:=1 to N do readln(mas[i]); max1:=mas[1]; max2:=mas[1]; if mas[2]>max1 then max1:=mas[2] else max2:=mas[2]; for i:=3 to N do begin if mas[i]>max1 then begin max2:=max1; max1:=mas[i]; end else if mas[i]>max2 then max2:=mas[i]; end; write(char(13)+char(10)); writeln(max2:0:2); readln end. |
N=30 DIM max1, max2, mas(N) AS SINGLE DIM i AS INTEGER FOR i = 1 TO N INPUT mas(i) NEXT i max1=mas(1) max2=mas(1) IF mas(2)>max1 THEN max1=mas(2) ELSE max2=mas(2) END IF FOR i = 3 TO N IF mas(i)>max1 THEN max2=max1 max1=mas(i) ELSE IF mas(i)>max2 THEN max2=mas(i) END IF NEXT i PRINT USING "##.##";max2 END |
Алгоритмический язык (исходник) | Си (исходник+exe-файл) |
алг нач цел N=30 вещтаб mas[1:N] цел i вещ max1, max2 нц для i от 1 до N ввод mas[i] кц max1:=mas[1]; max2:=mas[1]; если mas[2]>max1 то max1:=mas[2] иначе max2:=mas[2] все нц для i от 3 до N если mas[i]>max1 то max2:=max1 max1:=mas[i] иначе если mas[i]>max2 то max2:=mas[i] все все кц вывод нс,max2 кон |
#include <stdio.h> #include <conio.h> #define N 30 void main(void) { float mas[N]; float max1, max2; int i; for (i=0; i<N; i++) scanf("%f",&mas[i]); max1=mas[0]; max2=mas[0]; if (mas[1]>max1) max1=mas[1]; else max2=mas[1]; for (i=2; i<N; i++){ if(mas[i]>max1){ max2=max1; max1=mas[i]; } else if(mas[i]>max2) max2=mas[i]; } printf("\n%.2f",max2); getch(); } |
Естественный язык | |
Для хранения максимального элемента массива и следующего за максимальным введем переменные max1 и max2. Сначала приравнимаем эти переменные 1-му элементу массива. Далее в цикле при проходе массива сравниваем очередной элемент массива с max1 и max2. Если он больше max1, то max2 приравниваем max1, затем max1 приравниваем этому элементу. Если этот элемент ≤max1 и >max2, то max2 приравниваем этому элементу. После завершения работы цикла в переменной max2 содержится 2-й по величине элемент массива. |
Пример выполнения программы на 4-х языках:
На рисунке желтым цветом выделен 1-й максимальный элемент, а розовым - 2-й элемент (искомый). Он равен 12. Программа выводит такое же значение.