1. Найти столбец с наибольшей и наименьшей суммой элементов. Вывести на печать найденные столбцы и суммы их элементов.
program lab6z1;
uses crt;
const n=3;m=3;
var a:array [1..n,1..m] of integer;
i,j,kmax,k,kmin,s,smax,smin:integer;
begin
randomize;
smax:=-maxint;
smin:=maxint;
kmax:=0;
kmin:=0;
For i:=1 to n do
for j:=1 to m do
a[i , j]:=random(20);
For i:=1 to m do
begin
writeln;
for j:=1 to n do
write(‘a(‘,i,’,’,j,’)= ‘,a[i , j],’ ‘);
end;
For j:=1 to m do
begin
s:=0;
k:=0;
for i:=1 to n do
begin
s:=s+a[i,j];
k:=k+1;
if (k=n) and (s>smax) then begin
smax:=s;kmax:=j;end;
if (k=n) and (s<smin) then begin
smin:=s;kmin:=j;end;
end;
end;
writeln;
writeln(‘Максимальная сумма элементов в ‘,kmax,’ столбце’,’ и она равна ‘,smax);
writeln(‘Минимальная сумма элементов в ‘,kmin,’ столбце’,’ и она равна ‘,smin);
end.
2. Заполнить двумерный массив целыми числами от 1 до 100 по спирали.
program lab6z2;
uses crt;
const
n = 10; m =10;
var
s: array[1..n,1..m] of integer;
i,j,k,p: integer;
begin
i:=0; k:=0; p:=1;
while i<n*m do
begin
inc(k);
for j:=k to m-k+1 do
begin
inc(i);
s[k,j]:=p;
inc(p);
end;
for j:=k+1 to n-k+1 do
begin
inc(i);
s[j,m-k+1]:=p;
inc(p);
end;
for j:=m-k downto k do
begin
inc(i);
s[n-k+1,j]:=p;
inc(p);
end;
for j:=n-k downto k+1 do
begin
inc(i);
s[j,k]:=p;
inc(p);
end
end;
for i:=1 to n do
begin
for j:=1 to m do
write(s[i,j]:4,’ ‘);
writeln;
end;
readln;
end.
3. Дана вещественная матрица размерности n * m. Поменять местами строки с максимальным и минимальным элементами.
program lab6z3;uses crt;
var a:array[1..1000,1..1000] of real;
i,j,n,m,maxi,mini:integer;
max,min,b:real;
begin
max:=-maxint;
min:=maxint;
randomize;
writeln(‘Введите к-во строк и столбцов’); readln(n,m);
writeln(‘Автозаполнение массив А …’);
for i:=1 to n do
for j:=1 to m do
a[i,j]:=random(50);
for i:=1 to n do
begin
for j:=1 to m do write(a[i,j]:8:1);
writeln;
end;
for i:=1 to n do
for j:=1 to m do
if a[i,j]>max then
begin
max:=a[i,j]; maxi:=i;
end;
writeln(‘max элемент: ‘,max,’, строка: ‘,maxi);
{поиск min}
for i:=1 to n do
for j:=1 to m do
if a[i,j]<min then
begin
min:=a[i,j]; mini:=i;
end;
writeln(‘min элемент: ‘,min,’, строка: ‘,mini);
for j:=1 to m do
begin
b:=a[maxi,j];
a[maxi,j]:=a[mini,j];
a[mini,j]:=b;
end;
for i:=1 to n do
begin
for j:=1 to m do write(a[i,j]:8:1);
writeln;
end;
end.
4. Задан массив А[1:m, 1:n]. Некоторый элемент этого массива назовем Седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце. Напечатать номер строки и столбца какой-нибудь Седловой точки и напечатать число 0, если такой точки нет.
program lab6z4;
var i,j,k,n,m,st,max,jj:integer;
a:array[1..100,1..100]of integer;
begin
randomize;
writeln(‘Введите к-во строк и столбцов’); readln(n,m);
writeln(‘Автозаполнение массив А …’);
for i:=1 to n do
for j:=1 to m do
a[i,j]:=random(50);
for i:=1 to n do
begin
for j:=1 to m do write(‘ a[‘,i,’,’,j,’]=’,a[i,j]:4);
writeln;
end;
for j:=1 to m do
begin
max:=a[1,j];st:=1;k:=0;
for i:=1 to n do
if a[i,j]>max then
begin
max:=a[i,j];st:=i;
end;
for jj:=1 to m do
if (max>a[st,jj])and(j<>jj)then k:=1;
if k=0 then
begin
write(‘Седловая точка[‘,st,’,’,j,’]- число: ‘,a[st,j]);
halt;
end;
end;write(‘0’);
end.