Решение задач
Разбор задачи C3 (демо ЕГЭ 2005)
Опишите на русском языке или одном из языков программирования алгоритм подсчета числа элементов равных максимальному в числовом массиве из 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; max: real; i,num: integer; begin for i:=1 to N do readln(mas[i]); max:=mas[1]; num:=1; for i:=2 to N do begin if mas[i]>max then begin max:=mas[i]; num:=1; end else if mas[i]=max then num:=num+1; end; write(char(13)+char(10)); writeln(num); readln end. |
N=30 DIM max, mas(N) AS SINGLE DIM i, num AS INTEGER FOR i = 1 TO N INPUT mas(i) NEXT i max=mas(1) num=1 FOR i = 2 TO N IF mas(i)>max THEN max=mas(i) num=1 ELSE IF mas(i)=max THEN num=num+1 ENDIF NEXT i PRINT num END |
Алгоритмический (исходник) | Си (исходник+exe-файл) |
алг нач цел N=30 вещ maxZn цел i,num вещтаб mas[1:N] нц для i от 1 до N ввод mas[i] кц maxZn:=mas[1] num:=1 нц для i от 2 до N если mas[i]>maxZn то maxZn:=mas[i] num:=1 иначе если mas[i]=maxZn то num:=num+1 все все кц вывод нс,num кон |
#include <stdio.h> #include <conio.h> #define N 30 void main() { float max; int i,num; float mas[N]; for (i=0; i<N; i++) scanf("%f",&mas[i]); max=mas[0]; num=0; for(i=1;i<N;i++){ if(mas[i]>max){ max=mas[i]; num=1; } else if(mas[i]==max) num++; } printf("\n%d",num); getch(); } |
Естественный язык | |
Для хранения значения максимального элемента массива введем переменную max вещественного типа. Для подсчета и хранения количества максимальных элементов в массиве вводим целочисленную переменную num. Допустим, что 1-й элемент-максимальный. Тогда присвоим переменной max значение данного элемента. Количество максимальных элементов num приравняем единице. В цикле просматриваем все элементы массива, начиная со 2-го, и сравнимаем очередной элемент с текущим значением переменной max. Если он больше, то в переменную max заносим его значение, а num приравнимаем единице. Если они равны, то num увеличиваем на 1. После завешения работы цикла переменная num содержит число элементов равных максимальному. |
Пример выполнения программы на 4-х языках:
На рисунке видно, что максимальный элемент в массиве равен 12. В массиве есть 2 элемента со значением 12, они выделены розовым. Поэтому количество элементов равных максимальному равно 2-м. Что и вывела программа.