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