Заменить элементы, расположенные выше главной диагонали матрицы А(N,N), на минимальный элемент. Для решения задачи использовать процедуру. Исходные данные ввести из текстового файла, а результаты вывести в другой текстовой файл в основной программе. Все данные передать в процедуру через список формальных/фактических параметров — Pascal(Паскаль)

PROGRAM  LAB;
CONST
     N=3;   {размерность массива}
TYPE
     AR=ARRAY[1..N,1..N] OF INTEGER;
VAR
     A:AR;      {массив А}
     I, J: INTEGER; {индексы строк, столбцов} 
     FI, FO: TEXT;  {файловые переменные}
{процедура преобразования массива В}
PROCEDURE  PROC(VAR B:AR; M:INTEGER);
VAR
     K, L: INTEGER; {индексы строк, столбцов}
     Bmin: INTEGER; {минимальный элемент}
BEGIN
     {поиск минимального элемента}
     Bmin:=B[1,1];  
     FOR  K:=1 TO M DO
         FOR L:=1 TO M DO
             IF B[K,L]<Bmin  THEN Bmin:=B[K,L];
     {замена элементов выше главной диагонали}   
      FOR  K:=1 TO M DO
         FOR L:=1 TO M DO
             IF L>K  THEN B[K,L]:=Bmin;
END; { PROC }
{тело выполняемых операторов главной программы}
BEGIN 
     {открытие файла входных данных и чтение их}
     ASSIGN(FI, 'lab.inp');
     RESET(FI);
      FOR I:=1 TO N DO BEGIN
         FOR J:=1 TO N DO READ(FI,A[I,J]);
         READLN(FI)
     END;
     CLOSE(FI);
     {открытие выходного файла}
     ASSIGN (FO,'lab.out');
     REWRITE(FO);
     WRITELN(FO ,' Исходный массив A:');     
         FOR I:=1 TO N DO BEGIN
          FOR J:=1 TO N DO WRITE(FO,A[I,J]:3);
          WRITELN(FO)
     END;
     {вызов процедуры}
     PROC(A,N);
     APPEND(FO);
     WRITELN (FO ,' Преобразованный массив A:');
     FOR I:=1 TO N DO BEGIN
        FOR J:=1 TO N DO WRITE(FO,A[I,J]:3);
        WRITELN(FO)
     END;
     CLOSE(FO);
END.

Файл исходных данных:
1 2 3
-4 -5 6
7 8 9

Файл выходных данных:
Исходный массив А:
1 2 3
-4 -5 6
7 8 9
Преобразованный массив А:
1 -5 -5
-4 -5 -5
7 8 9

Leave a Comment

− 2 = 4