Дописать код наработки есть, но чет не могу понять как указать номер строк и столбца мин и мах значения
uses
crt;
var
FText: text;
//создаем свои типы
type
matrix = array [1..15, 1..15] of real;//матрица
arrayB = array [1..50] of real;//матрица-строка
function F(x: real): real;
beginif x <= 0then//при х<=-3
F := sqrt(-x) //1-я формула
elseif ((x>=0) and (x<5)) then//при х<3
F := x //2-я формула
else//иначе
F := 4*x*x; //3-я формула
end;
//функция инициализации матрицы
function CreateMatrix(n: integer; xn: real; xk: real): matrix;
var
i, j: integer;
x, h: real;
a: matrix;
begin
x := xn;
h := (xk - xn) / (n * n - 1); //высчитываем шаг
for i := 1to n do//перебираем строки
for j := 1to n do//перебираем столбцы
begin
a[i, j] := f(x);
x := x + h;//увеличиваем х на шаг;
a[i, j]:=i*n-n+j;// удобно для теста
end;
CreateMatrix := a; //возвращаем матрицу
end;
//функция печати массива
procedure PrintMatrix(a: matrix; n: integer);
var
i, j: integer;
beginfor i := 1to n do//перебираем строки
beginfor j := 1to n do//перебираем столбцы
begin
write(a[i, j]:8:2, ' '); //выводим элемент матрицы
write(Ftext,a[i, j]:8:2, ' '); //выводим элемент матрицы
end;
writeln(Ftext,'');
writeln; //после каждой строки переход
end;
end;
//функци замены областей местами
procedure SwapMatrix(var a: matrix; n: integer);
var
i, j, h, h2: integer;
begin
h := n div2; //высчитвыем номер первой строки второй области
for i := 1to h do//перебираем строки перволй половины матрицы
beginfor j := 2*i-1to min(2*i-2+h,n) do//перебираем строки
swap(a[i, j], a[i + h+(n mod2), j]); //меняем на соответсвующие элмементы второй области
end;
end;
//функция создания матрицы чтроки
function CreateArray(a: matrix; n: integer; var m: integer): arrayB;
var
i, h, j, k: integer;
b: arrayB;
begin
m := 0;
h := n div2;
for i := 1to h dobegin
m := m + 1; //увеличиваем индекс в матрице строке
b[m] := a[i,min(2*i-2+h,n)]; //вставляем значение
end;
k:=n;
if n mod2 = 1then
i:=i+1else
k:=n-1;
for j := k downto1dobegin
m := m + 1; //увеличиваем индекс в матрице строке
b[m] := a[i,j]; //вставляем значение
end;
k:=0;
for i := i+1to n dobegin
m := m + 1; //увеличиваем индекс в матрице строке
k:=k+1;
b[m] := a[i,2*k-1]; //вставляем значение
end;
CreateArray := b; //возвращаем результат
end;
//функция печати матрицы-строки
procedure PrintArray(a: arrayB; n: integer);
var
i: integer;
beginfor i := 1to n do//перебор индексов
begin
write(Ftext,a[i]:8:2, ' ');
write(a[i]:8:2, ' '); //печать элемента
end;
writeln(Ftext,'');
writeln;
end;
//функция сортировки пузырьком
procedure SortArray(var arr: arrayB; m: integer; IsDesc: Boolean);
var
i, j: integer;
k: real;
beginfor i := 1to m - 1do//перебор элементов
for j := 1to m - i do// если текущий элемент больше или меньше следующего в зависимости от параметра IsDesc
if (arr[j] > arr[j + 1]) and IsDesc ornot IsDesc and (arr[j] < arr[j + 1]) thenbegin//то меняем местами элементы
k := arr[j];
arr[j] := arr[j + 1];
arr[j + 1] := k
end;
end;
//покраска элементов
procedure PrintMatrixColor(a: matrix; n: integer);
var
i, j, h, h2: integer;
begin
h := n div2 ;
h2 := h + n mod2 ;
for i := 1to n do//перебор строк
beginfor j := 1to n do//перебор столбцов
beginif (i<=h) and (j=min(2*i-2+h,n)) or (i=h2) or (i>h) and (j=2*(i-h2)-1) then//проверка принадлежности стрелок
textcolor(green)
elseif (i<=h) and (j>=2*i-1) and (j<=min(2*i-2+h,n))
or (i>h2) and (j>=2*(i-h2)-1) and (j<=min(2*(i-h2)-2+h,n)) then//принадлежность верхенму участку
textcolor(red)
elseif (i>h) and (j<=h-(n mod2)) and (i-h<=j) then//принадлежность нижнему участку
textcolor(Cyan)
else
textcolor(white);
write(a[i, j]:8:2, ' ');
end;
writeln;
end;
textcolor(white);
end;
//поиск минимального и максимального элемента
procedure MinMaxMatrix(var a: matrix; n: integer; var mn: real; var max: real);
var
i, j, h, h2: integer;
begin
h := n div2 ;
h2 := h + n mod2 ;
max := a[2, 1]; //изначально считаем что мин и мак элемент по индексу 2,1
mn := a[2, 1];
for i := 1to n do//перебераем строки
for j := 1to n do//перебераем столбцы
ifnot((i<=h) and (j>=2*i-1) and (j<=min(2*i-2+h,n))
or (i>h2) and (j>=2*(i-h2)-1) and (j<=min(2*(i-h2)-2+h,n))) thenbeginif max < a[i, j] then//если тек. элемент больше максимального
max := a[i, j]; //то делаем его максимальным
if mn > a[i, j] then//аналогично для минимального
mn := a[i, j];
end;
end;
// замена элементов в диагонали
procedure SwapDiagonalMatrix(var a: matrix; n: integer);
var
i, j: integer;
min: real;
begin
min:=a[1,n];
for i := 1to n do//перебераем строки
if min > a[i, i] then//если тек. элемент больше минмльного
min := a[i, i]; //то делаем его минимальным
//если несколько максимальных, то замени все
for i := 1to n do//перебераем строки
begin
a[i,i] := min;
a[i, n-i+1]:=min;
end;
end;
var
a: matrix;
n, m: integer;
xn, xk, mx, mn: real;
b: arrayB;
begin//ввод разномернос с проверкой
assign(Ftext,'result.txt');
Rewrite (Ftext);
repeat
write('Введите число в диапазоне от 5 до 15: ');
readln(n);
until (n >= 5) and (n <= 15);
write('Введите x начальное: ');
readln(xn);
write('Введите x конечное: ');
readln(xk);
a := CreateMatrix(n, xn, xk);//создаем матрицу
writeln('Исходная матрица: ');
writeln(Ftext,'Исходная матрица: ');
PrintMatrix(a, n); //печатаем ее
writeln('Измененный массив: ');
writeln(Ftext,'Измененный массив: ');
SwapMatrix(a,n);
PrintMatrix(a, n);
writeln('Массив B: ');
writeln(Ftext,'Массив B: ');
b := CreateArray(a, n, m);
PrintArray(b, m);
writeln('Массив B отсоритрованный по возростанию: ');
writeln(Ftext,'Массив B отсоритрованный по возростанию: ');
SortArray(b,m,true);
PrintArray(b, m);
writeln('Массив B отсоритрованный по убыванию: ');
writeln(Ftext,'Массив B отсоритрованный по убыванию: ');
SortArray(b,m,false);
PrintArray(b, m);
MinMaxMatrix(a,n,mn,mx);
writeln('Максимальный элемент: ',mx:0:3);
writeln('Минимальный элемент: ',mn:0:3);
writeln(Ftext,'Максимальный элемент: ',mx:0:3);
writeln(Ftext,'Минимальный элемент: ',mn:0:3);
close(Ftext);
end.