matrici 2
3. Se citeşte o matrice pătrată de dimensiune nxn şi elemente numere întregi. Se cere:
a) Să se afişeze numerele prime de pe diagonala principală;
b) Să se formeze un vector cu elementele matricei parcurse în ordine pe coloane.
var a:array[1..50,1..50] of integer;
n,m:byte;
procedure citire;
var i,j:byte;
begin
write('n=');readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
end;
function prim(n:integer):boolean;
var i:byte;
begin
prim:=true;
if(n<=1)then prim:=false;
for i:=2 to n div 2 do
if n mod i=0 then prim:=false;
end;
procedure diagonala_p;
var i:byte;
begin
for i:=1 to n do
if(prim(a[i,i])) then write(a[i,i],' ');
writeln;
end;
procedure afisare;
var i,j:byte;
begin
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
end;
procedure parcurgere;
var i,j,k:byte;
b:array[1..900]of integer;
begin
k:=0;
for j:=1 to n do
for i:=1 to n do
begin
k:=k+1;
b[k]:=a[i,j];
end;
for i:=1 to k do write(b[i],' ');
end;
begin
citire;
afisare;
writeln('elementele prime de pe diagonala principala');
diagonala_p;
writeln('parcurgerea');
parcurgere;
end.
5. Se citeşte o matrice cu n linii şi m coloane. Se cere:
a) Să se formeze un vector în care se vor reţine elementele maxime de pe fiecare coloană a matricei;
b) Să se ordoneze vectorul format la punctul a.
var a:array[1..50,1..50] of integer;
b:array[1..50]of integer;
n,m:byte;
procedure citire;
var i,j:byte;
begin
write('n=');readln(n);
write('m=');readln(m);
for i:=1 to n do
for j:=1 to m do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
end;
procedure afisare;
var i,j:byte;
begin
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j],' ');
writeln;
end;
end;
procedure maxim_coloane;
var max:integer;
i,j:byte;
begin
for j:=1 to m do
begin
max:=a[1,j];
for i:=1 to n do
if max<a[i,j] then max:=a[i,j];
b[j]:=max;
end;
end;
procedure afisare_vector;
var i:byte;
begin
for i:=1 to m do write(b[i],' ');
writeln;
end;
procedure sortare;
var aux:integer;i,j:byte;
begin
for i:=1 to m-1 do
for j:=i+1 to m do
if(b[i]>b[j]) then begin
aux:=b[i];
b[i]:=b[j];
b[j]:=aux;
end;
end;
begin
citire;
afisare;
writeln('elementele maxime de pe fiecare coloana');
maxim_coloane;
afisare_vector;
writeln('sortare');
sortare; afisare_vector;
end.
19. Se dă o matrice x, cu n linii şi n coloane, cu elemente întregi.Să se determine numărul elementelor din matrice care sunt < 24 şi se găsesc deasupra diagonalei principale pe linii pare.
var a:array[1..30,1..30]of integer;
n:byte;
procedure citire;
var i,j:byte;
begin
write('n=');readln(n);
for i:=1 to n do
for j:=1 to n do begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
end;
procedure afisare;
var i,j:byte;
begin
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
writeln;
end;
procedure afisare_elemente_deasupra_dp;
var i,j:byte;
begin
for i:=1 to n-1 do
begin
for j:=i+1 to n do
write(a[i,j],' ');
writeln;
end;
end;
procedure elemente;
var i,j,c:byte;
begin
c:=0;
for i:=1 to n-1 do
if i mod 2=0 then
for j:=i+1 to n do
if a[i,j]<24 then c:=c+1;
writeln('c=',c);
end;
begin
citire;
writeln('matricea');
afisare;
writeln('elementele de deasupra diagonalei principale');
afisare_elemente_deasupra_dp;
elemente;
end.
42. Se introduce de la tastatură o matrice pătrată de ordin n cu elemente numere întregi. Se cere să se calculeze şi afişeze:
a) suma elementelor de deasupra diagonalei principale;
b) suma elementelor de sub diagonala secundară.
var a:array[1..30,1..30]of integer;
n:byte;
procedure citire;
var i,j:byte;
begin
write('n=');readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
end;
procedure afisare;
var i,j:byte;
begin
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
end;
procedure deasupra_dp;
var i,j:byte;s:integer;
begin
s:=0;
for i:=1 to n-1 do
begin
for j:=i+1 to n do
begin
s:=s+a[i,j];
write(a[i,j],' ');
end;
writeln;
end;
writeln('suma elementelor de deasura diagonalei principale=',s);
end;
procedure sub_ds;
var i,j:byte;s:integer;
begin
s:=0;
for i:=2 to n do
begin
for j:=n-i+2 to n do
begin
s:=s+a[i,j];
write(a[i,j],' ');
end;
writeln;
end;
writeln('suma elementelor de sub diagonala secundara=',s);
end;
begin
citire;
writeln('matricea');
afisare;
writeln('elementele de deasupra diagonalei principale');
deasupra_dp;
writeln('elementele de sub diagonala secundara');
sub_ds;
end.