Есептің жұмысына түсініктеме және орындалу нәтижелері
Program деген түйінді сөз арқылы бастап, тұрақты шаманы n мәнін енгіздім. Айнамалылар типтерін алдын ала сипаттау керек. Квадраттық матрицаның диагональне параллель диагональдардың құрамындағы элементтердің қосындысын табатын процедура құрып шығаруға болады. Массивті файл арқылы сақтауға болады. Assign- файлдың орналасқан адресі, reset – соны оқу. Циклды пайдаланып және процедура арқылы төменгі және жоғарғы параллель диагональдардың қосындысын шығарыды. Төменгі диагональдардың қосындысы арасындағы минимумын тауып, содан осындай тізбекпен жоғарғы диагональдардың қосындысының минимумы табылады. Енді екеуінің арасындағы минимумды табу үшін шартты қолданамыз (min2>min1), шарт «ақиқат» болса min=min1 теңестіріледі. Шарт «жалға» болса (min=min2) теңестіріледі. Програманы аяқтау үшін end түйінді сөзін қолданамын.
Есептің шешуі:
Program aseem_3_2;
Uses crt;
Const N = 3; M = 3;
Var Mas : array[1..n, 1..m] of integer;
MinN, MinM, Max, Min : integer;
MaxN, MaxM : integer;
OldMinN, OldMinM, OldMin : integer;
OldMaxN, OldMaxM, OldMax : integer;
i, j : integer;
Procedure sedl;
Const N = 3; M = 3;
Var Mas : array[1..n, 1..m] of integer;
MinN, MinM, Max, Min : integer;
MaxN, MaxM : integer;
OldMinN, OldMinM, OldMin : integer;
OldMaxN, OldMaxM, OldMax : integer;
i, j : integer;
begin
for j := 1 to m do
BEGIN
if Mas[1, j] < Mas[2, j] then
begin
MinN := 1;MinM := j;
Min := Mas[1, j];
MaxN := 2;MaxM := j;
Max := Mas[2, j];
end else
begin
MinN := 1;MinM := j;
Min := Mas[1, j];
MaxN := 2;MaxM := j;
Max := Mas[2, j];
end;
for i := 3 to m do
begin
if Mas[i, j] < Min then
begin
MinN := i; MinM := j;
Min := Mas[i, j];
end;
if Mas[i, j] > Max then
begin
MaxN := i; MaxM := j;
Max := Mas[i, j];
end
end;
if Mas[MinN, 1] < Mas[MinN, 2] then
begin
OldMaxN := MinN;
OldMaxM := 2;
OldMax := Mas[MinN, 2];
end else
begin
OldMaxN := MinN;
OldMaxM := 1;
OldMax := Mas[MinN, 1];
end;
for i := 3 to m do
if Mas[MinN, i] > OldMax then
begin
OldMaxN := MinN;
OldMaxM := i;
OldMax := Mas[MinN, i];
end;
if Mas[MaxN, 1] < Mas[MaxN, 2] then
begin
OldMinN := MaxN;
OldMinM := 1;
OldMin := Mas[MaxN, 1];
end else
begin
OldMinN := MaxN;
OldMinM := 2;
OldMin := Mas[MaxN, 2];
end;
for i := 3 to m do
if Mas[MaxN, i] < OldMin then
begin
OldMinN := MaxN;
OldMinM := i;
OldMin := Mas[MaxN, i];
end;
END;
BEGIN
Clrscr;
for j := 1 to m do
for i := 1 to n do
begin
Write('Mas [', i, ',', j, '] : ');
Readln(Mas[i, j]);
end;
sedl;
if (Min = OldMax) and (MinN = OldMaxN) then
writeln('‘Седл точки M[', MinN, ',', MinM, '] = ', Min);
if (Max = OldMin) and (MinN = OldMaxN) then
Writeln('‘Седл точки M[', MaxN, ',', MaxM, '] = ', Max);
END;
readln;
end.
Жауабы: