Пример 3.2.
Подсчитать, сколько раз встречается в
заданной целочисленной матрице A(N, M)
максимальное по величине число.
Тест
Данные
Результат
N=2 M=3
A=
K=3
Демонстрация
Школьный АЯ
алг Количество максимумов(арг цел N,M, арг цел таб А[1:N,1:M], рез цел K)
нач цел i, j, Amax
Amax := A[1, 1] | Поиск максимального элемента матрицы
нц для i от 1 до N
нц для j от 1 до M
еслиA[i, j] > Amax
то Amax := A[i, j]
все
кц
кц K := 0 | подсчет количества вхождений Amax
нц для i от 1 до N
нц для j от 1 до M
еслиA[i, j] = Amax
то K := K+1
все
кц
кц
кон
Исполнение алгоритма
i
j
A[i,j]>Amax
Amax
12
123123
-++---
125
(продолжение)
i
j
A[i,j]=Amax
K
12
123123
--++-+
0123
Блок-схема (фрагмент)
Turbo Pascal
Program NumberOfMaximums;
Uses Crt;
Type Mas = Array [1..10, 1..10] of Integer;
Var A : Mas;
N, M, K, Amax, i, j : Integer; {K - искомый результат}
{--------------------------------------------}
Procedure InputOutput(Var A : Mas);
Begin {описание процедуры ввода-вывода матрицы}
ClrScr;
Write('Количество строк - '); ReadLn(N);
Write('Количество столбцов - '); ReadLn(M);
For i := 1 to N do {Ввод матрицы}
For j := 1 to M do
begin Write('A[' , i , ', ' , j , ']= ? ');
ReadLn(A[i, j])
end; WriteLn;
ClrScr; WriteLn(' Матрица А');
For i := 1 to N do {Вывод матрицы}
begin
For j := 1 to M do Write(A[i, j] : 5 );
WriteLn
end; WriteLn
End; { of InputOutput }
{--------------------------------------------}
Procedure MaxElement(Var A : Mas; Var Amax : Integer);
Begin {описание процедуры поиска Amax}
Amax := A[1, 1];
For i := 1 to N do
For j := 1 to M do
If A[i, j] > Amax then Amax := A[i, j];
End; {of MaxElement}
{--------------------------------------------}
Procedure HowMuch(Var A : Mas; K : Integer);
Begin {описание процедуры подсчета числа вхождений Amax}
K:=0;
For i := 1 to N do
For j := 1 to M do
if A[i, j] = Amax then K := K+1;
WriteLn('Максимальное число ', Amax : 3 ,
' встречается ', K, ' раз(a)'); ReadLn;
End; {of HowMuch}
{--------------------------------------------}
BEGIN
InputOutput(A); {Вызов процедуры ввода-вывода матрицы}
MaxElement(A, Amax); {Вызов процедуры поиска макс. элемента}
HowMuch(A, K) {Вызов процедуры подсчета числа
вхождений максимального элемента }
END.