Y
yaroslavbondarev
Дана целочисленная матрица {Aij}i=1...n;j=1..n , n<=100. Если в матрице есть две одинаковых строки, заменить минимальные элементы столбцов на наибольший из простых элементов матрицы. Использовать процедуры и функции!
Код:
Program Variant3;
uses crt;
const l=100;
type matrix=array[1..l,1..l] of integer;
var i,j,n:integer;
a:matrix;
k,s:text;
t,f:boolean;
procedure Vvod(var n:integer);
var i,j:integer;
Begin
write('n= ');
readln(n);
For i:=1 to n do begin
for j:=1 to n do begin
read(a[i,j]);
end;
end;
end;
procedure Vyvod(n:integer);
var i,j:integer;
begin
for i:=1 to n do begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
end;
end;
function Poisk(n:integer):boolean;
var i,j,o:integer;
t,f:boolean;
Begin
f:=false;
for i:=1 to n-1 do begin
for j:=i+1 to n do begin
t:=true;
for o:=1 to n do
if a[i,o]<>a[j,o] then begin
t:=false;
break;
end;
if t=true then begin
f:=true;
break;
end;
end;
end;
Poisk:=f;
End;
function prost(a:integer):boolean;
var i:integer;
begin
prost:=true;
if a<2 then prost:=false
else
for i:=1 to round(sqrt(a)) do
if a mod i=0 then
begin
prost:=false;
break;
end;
end;
procedure Zamena (n:integer);
var y,stop,min,mini,max,i,j:integer;
f:boolean;
begin
max:=0;
for i:=1 to n do begin
for j:=1 to n do
if Prost(n)=false then
if (max=0) or (max<a[i,j]) then max:=a[i,j];
for j:=1 to n do begin
min:=a[1,j];
mini:=1;
for i:=1 to n do
if min>a[i,j] then begin
minI:=i;
min:=a[i,j];
end;
a[mini,j]:=max;
end;
end;
end;
Begin
Vvod(n);
if Poisk(n)=true then Zamena(n);
Vyvod(n);
End.