Дана целочисленная матрица {Aij}i=1...n;j=1..n , n меньше или равно 100. Если сумма наибольшего и наименьшего элементов матрицы – простое число, упорядочить элементы строк, в которых есть хотя бы один отрицательный элемент, по невозрастанию
Категория: Delphi/Pascal
2012-02-26 21:31:10
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.
Поделиться: