Найти наибольший и наименьший элементы квадратной матрицы - Free Pascal
Формулировка задачи:
Найти наибольший и наименьший элементы кв. матрицы A(n,n), где n - нечётное число, в заштрихованной части
Нужно сделать на подобие этой задачи, для следующей заштрихованной части:
VAR A: ARRAY[1..17,1..17] OF INTEGER; N,I,J,K,MAX,MIN: INTEGER; PROCEDURE POISK; BEGIN IF A[I,J]>MAX THEN MAX:=A[I,J] ELSE IF A[I,J]<MIN THEN MIN:=A[I,J] END; BEGIN RANDOMIZE; REPEAT N:=RANDOM(15)+3 UNTIL N MOD 2=1; WRITELN('N=',N); FOR I:=1 TO N DO BEGIN FOR J:=1 TO N DO BEGIN A[I,J]:=RANDOM(100); WRITE(A[I,J]:4) END; WRITELN END; K:=TRUNC(N/2)+1; MAX:=A[1,K]; MIN:=MAX; FOR I:=1 TO K DO FOR J:=K DOWNTO K+1-I DO POISK; FOR I:=K TO N DO FOR J:=K+N-I DOWNTO K DO POISK; WRITELN(MAX,',',MIN); END.
Решение задачи: «Найти наибольший и наименьший элементы квадратной матрицы»
textual
Листинг программы
VAR A: ARRAY[1..18,1..18] OF INTEGER; N,I,J,K,MAX,MIN: INTEGER; PROCEDURE POISK; BEGIN IF A[I,J]>MAX THEN MAX:=A[I,J] ELSE IF A[I,J]<MIN THEN MIN:=A[I,J] END; BEGIN RANDOMIZE; REPEAT N:=RANDOM(17)+2 UNTIL N MOD 2=0; WRITELN('N=',N); writeln(' '); FOR I:=1 TO N DO BEGIN FOR J:=1 TO N DO BEGIN A[I,J]:=RANDOM(100); WRITE(A[I,J]:4) END; WRITELN END; K:=N div 2; MAX:=A[K,1]; MIN:=MAX; FOR I:=1 TO K DO FOR J:=K-I+1 TO K DO POISK; FOR I:=K+1 TO N DO FOR J:=K+1 TO N-I+K+1 DO POISK; WRITELN(MAX,',',MIN); END.
Объяснение кода листинга программы
В данном коде используется язык программирования Free Pascal. Список действий, которые выполняются в коде:
- Объявление переменных:
- A: массив для хранения элементов квадратной матрицы размером 18x18 (ARRAY[1..18,1..18] OF INTEGER).
- N, I, J, K, MAX, MIN: целочисленные переменные для выполнения различных операций (INTEGER).
- Создание процедуры POISK:
- Если элемент массива A[I,J] больше MAX, то MAX присваивается значение этого элемента.
- Если элемент массива A[I,J] меньше MIN, то MIN присваивается значение этого элемента.
- Начало выполнения программы:
- Инициализация генератора случайных чисел (RANDOMIZE).
- Создание квадратной матрицы случайными значениями (FOR I:=1 TO N DO FOR J:=1 TO N DO BEGIN A[I,J]:=RANDOM(100); WRITE(A[I,J]:4)).
- Вывод размера матрицы (N) на экран (WRITELN('N=',N)).
- Вывод шариков под номерами от 1 до N на экран (WRITELN).
- Вычисление индекса середины матрицы (K).
- Установка начального значения MAX и MIN равным первому элементу матрицы (A[K,1]).
- Поиск наибольшего и наименьшего элементов матрицы с помощью процедуры POISK (FOR I:=1 TO K DO FOR J:=K-I+1 TO K DO POISK; FOR I:=K+1 TO N DO FOR J:=K+1 TO N-I+K+1 DO POISK).
- Вывод найденных значений MAX и MIN на экран (WRITELN(MAX,',',MIN)). Примечание: В данном коде реализован алгоритм поиска наибольшего и наименьшего элементов с использованием перебора всех элементов матрицы. Это не самый эффективный способ решения данной задачи, так как существуют более оптимальные алгоритмы для больших матриц.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д