Дана целочисленная матрица {Aij}i=1...n;j=1..n , n меньше или равно 100. Если сумма наибольшего и наименьшего элементов матрицы – простое число, упорядочить элементы строк, в которых есть хотя бы один отрицательный элемент, по невозрастанию

code: #pascal
program PascalGuru;
uses crt;
type matr=array[1..100,1..100] of integer;
var A:matr;
    n:integer;
 
{--------------------------------------------}
function simple(x:integer):boolean;     {proverka chisla na "prostotu"}
label 1;
  var i:longint;
      result: boolean;
begin
if (x=1) or (x=0) then begin result:=false; goto 1;  end;
  for i:=2 to x div 2 do
    if x mod i=0 then begin
       result:=false; goto 1; end;
    result:=true;
 
1:simple:=result;
end;
{--------------------------------------------}
procedure read_m(var X:matr; n:integer); {schityvaem matritsu}
var i,j:integer;
begin
writeln ('Vvedite elementy massiva: ');
for i:=1 to n do
for j:=1 to n do begin
write ('[',i,',',j,']='); readln (X[i,j]); end;
end;
{--------------------------------------------}
procedure write_m(X:matr; n:integer);  {vyvodim matritsu}
var i,j:integer;
begin
for i:=1 to n do begin writeln;
for j:=1 to n do write (X[i,j]:4,' '); end;
end;
{--------------------------------------------}
function max(X:matr; n:integer):integer; {vozvraschaet MAX}
var i,j,rez:integer;
begin
rez:=X[1,1];
for i:=1 to n do
for j:=1 to n do
if X[i,j]>rez then rez:=X[i,j];
max:=rez;
end;
{--------------------------------------------}
function min(X:matr; n:integer):integer; {vozvraschaet MIN}
var i,j,rez:integer;
begin
rez:=X[1,1];
for i:=1 to n do
for j:=1 to n do
if X[i,j]then rez:=X[i,j];
min:=rez;
end;
{--------------------------------------------}
procedure exchange(var a,b:integer); {protsedura obmena}
var c:integer;
begin
c:=a; a:=b; b:=c; end;
{--------------------------------------------}
procedure sort_m(var X:matr; n:integer); {sortiruet stroki s otritsatelinymi el-mi}
var i,j,nn:integer;
    swop:boolean;
begin
for i:=1 to n do
    begin
     swop:=false;
      for j:=1 to n do
      if X[i,j]<0 then swop:=true;
     if not swop then continue;
 
     nn:=n;
       repeat
       swop:=false;
       for j:=1 to nn-1 do
       if x[i,j]>x[i,j+1] then begin         {//esli "<" togda po ubivaniiu }
       exchange(x[i,j],x[i,j+1]); swop:=true; end;
       dec(nn);
       until not swop;
    end;
end;
{--------------------------------------------}
 
begin
write('N= '); readln (n);
read_m(A,n);
 
clrscr;
write ('Vot vvedennyi vami massiv A: ');
write_m(A,n);
 
writeln;writeln;
if not simple( max(A,n)+min(A,n) ) then
   begin writeln('Uslovie s summoi ne soblyudeno...'); readln;halt;end;
 
sort_m(A,n);
write ('Vot obnovlennyi massiv A: ');
write_m(A,n);
 
 
readln;
end.      
Поделиться:

Похожие статьи: