Тема: Програма з використанням динамічних масивів – параметрів функцій*
Дана дійсна квадратна матриця порядку n. Знайти найбільше із значень елементів, розташованих у зафарбованої частині матриці (a)
Обов'язкова умова: вводити розмір, та саму матрицю з клавіатури.
Знайшов схожу задачу як у варіанті (б) тільки на Pascal ABC
var a:array[1..100, 1..100] of integer;
i,j,amax,n,k,c:integer;
begin
WriteLn('Введите размеры матрицы:');
ReadLn(n);
WriteLn('Исходная матрица:');
for i:=1 to n do begin
for j:=1 to n do begin
a[i,j]:=random(50)-25;
Write(a[i,j]:4);
end;
WriteLn();
WriteLn();
end;
k:=0;
i:=1;
j:=1;
c:=a[i,j];
for i:=1 to n do begin
for j:=1 to k+1 do begin
if c<a[i,j] then
c:=a[i,j];
end;
k:=k+1;
end;
WriteLn();
WriteLn('Максимальный элемент: ',c:3);
end.
Та ще одна мабуть уныверсальна на Pascal
Uses crt;
Const n=5;
Type mas=array[1..n,1..n] of integer;
Var x:mas; max:integer;
Procedure Vvod(Var x:mas; n:integer);
Var i,j:integer;
Begin
for i:=1 to n do
for j:=1 to n do x[i,j]:=Random(100);
End;
Procedure Print(x:mas; n:integer);
Var i,j:integer;
Begin
for i:=1 to n do
Begin
for j:=1 to n do Write(x[i,j]:4);
WriteLn;
End;
End;
Procedure max_elem(Var max:integer; x:mas; n:integer);
Var i,j,im,jm,k:integer;
Begin
max:=0;
Write('vvedite nomer risunka=');
ReadLn(k);
for i:=1 to n do
for j:=1 to n do
Case k of
1: if (j>=i) and (x[i,j]>max) then
Begin
max:=x[i,j]; im:=i; jm:=j;
End;
2: if (i>=j) and (x[i,j]>max) then
Begin
max:=x[i,j]; im:=i; jm:=j;
End;
3: if (j>=i) and (n-j+1>=i) and (x[i,j]>max) then
Begin
max:=x[i,j]; im:=i; jm:=j;
End;
4: if (i>=j) and (n-j+1<=i) and (x[i,j]>max) then
Begin
max:=x[i,j]; im:=i; jm:=j;
End;
5: if ((j>=i) and (n-j+1>=i)) or ((i>=j) and (n-j+1<=i)) and (x[i,j]>max) then
Begin
max:=x[i,j]; im:=i; jm:=j;
End;
6: if ((j<=i) and (n-i+1>=j)) or ((j>=i) and (n-i+1<=j)) and (x[i,j]>max) then
Begin
max:=x[i,j]; im:=i; jm:=j;
End;
7: if (j<=i) and (n-i+1>=j) and (x[i,j]>max) then
Begin
max:=x[i,j]; im:=i; jm:=j;
End;
8: if (j>=i) and (n-i+1<=j) and (x[i,j]>max) then
Begin
max:=x[i,j]; im:=i; jm:=j;
End;
9: if (n-i+1>=j) and (x[i,j]>max) then
Begin
max:=x[i,j]; im:=i; jm:=j;
End;
10: if (n-i+1<=j) and (x[i,j]>max) then
Begin
max:=x[i,j]; im:=i; jm:=j;
End;
End;
Write('max_element=x[',im,',',jm,']=',x[im,jm]);
End;
Begin clrscr; randomize;
Vvod (x,n);
Print(x,n);
max_elem(max,x,n);
ReadLn;
End.