Set 3 - matrici
1. Se citeste o matrice cu n linii si m coloane si elemente numare intregi. Se cere:
a)sa se determine elementele minime de pe fiecare linie
b)sa se numere elementele pare de pe perimetrul matricii
type matrice=array[1..100,1..100]of integer;
var a:matrice;
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 minim_linii;
var i,j:byte;min:integer;
begin
for i:=1 to n do
begin
min:=a[i,1];
for j:=1 to m do
if a[i,j]<min then min:=a[i,j];
writeln('min de pe linia ',i,' =',min);
end;
end;
procedure perimetru;
var i,j:byte;nr:integer;
begin
nr:=0;
{pt linia 1 si n}
for i:=1 to m do
if (a[1,i] mod 2=0)or(a[n,i]mod 2=0) then nr:=nr+1;
{pt coloana 1 si m}
for i:=1 to n do
if (a[i,1]mod 2=0)or (a[i,m]mod 2=0) then nr:=nr+1;
writeln('nr de elemente pare de pe perimetrul matricii=',nr);
end;
procedure afisarematrice;
var i,j:byte;
begin
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:3);
writeln;
end;
end;
BEGIN
citire;
afisarematrice;
minim_linii;
perimetru;
end.
2. Se da o matrice cu n linii si n coloane. Sa se determine maximul elementelor pare de pe coloana p.
type matrice=array[1..100,1..100]of integer;
var a:matrice; n,p: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;
write('p=');readln(p);
end;
procedure maxime;
var i,j:byte;max:integer;
begin
max:=-32767;
for i:=1 to n do
if (a[i,p]>max)and(a[i,p] mod 2=0) then max:=a[i,p];
if max=-32767 then write('exsita numai elemente impare pe coloana p')
else writeln('max=',max);
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;
begin
citire;
afisare;
maxime;
end.
3. Se da o matrice m linii si n coloane elementele matricii numere intregi sa se determine elementul minim de pe coloana c, c citita de la tasatura.
type matrice=array[1..100,1..100]of integer;
var a:matrice; n,c,m:byte;
procedure citire;
var i,j:byte;
begin
write('m=');readln(m);
write('n=');readln(n);
for i:=1 to m do
for j:=1 to n do
begin
write('a[',i,',',j,']=');readln(a[i,j]);
end;
write('c=');readln(c);
end;
procedure minim;
var i,j:byte;min:integer;
begin
min:=a[1,c];
for i:=2 to m do
if (a[i,c]<min)then min:=a[i,c];
writeln(min);
end;
procedure afisare;
var i,j:byte;
begin
for i:=1 to m do begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
end;
begin
citire;
afisare;
minim;
end.
4. Se citeste un numar natural n. Sa se creeze o matrice care contine:
- cifrele numarului pe diagonala principala
- valoarea elementelor ramase in matrice sa contina valoarea 0.
var n:longint;nr:byte;
a:array[1..100,1..100] of byte;
procedure umplere_cu0;
var i,j:byte;
begin
for i:=1 to 100 do
for j:=1 to 100 do
a[i,j]:=0;
end;
procedure completeaza;
begin
nr:=1;
repeat
a[nr,nr]:=n mod 10;
n:=n div 10;
nr:=nr+1;
until n=0;
end;
procedure afisare;
var i,j:byte;
begin
for i:=1 to nr-1 do
begin
for j:=1 to nr-1 do
write(a[i,j],' ');
writeln;
end;
end;
begin
write('n=');readln(n);
umplere_cu0;
completeaza;
afisare;
end.
5. Se citeste o matrice cu m linii si n coloane cu elemente numare intregi.Sa se interschimbe doua linii l1 si l2 (date), intre ele, folosind un subprogram.
type matrice=array[1..100,1..100]of integer;
var a:matrice; n,m,l1,l2:byte;
procedure citire;
var i,j:byte;
begin
write('m=');readln(m);
write('n=');readln(n);
for i:=1 to m do
for j:=1 to n do
begin
write('a[',i,',',j,']=');readln(a[i,j]);
end;
write('l1=');readln(l1);
write('l2=');readln(l2);
end;
procedure interschimb;
var i:byte; aux:integer;
begin
for i:=1 to n do
begin
aux:=a[l1,i];
a[l1,i]:=a[l2,i];
a[l2,i]:=aux;
end;
end;
procedure afisare;
var i,j:byte;
begin
for i:=1 to m do begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
end;
begin
citire;
afisare;
writeln;
interschimb;
afisare;
end.
6. Se citesc de la tastatura elementele unei matrici patratice. Sa se afiseze:
- suma elementelor din matrice
- suma elementelor de pe diagonala principala
type matrice=array[1..100,1..100]of integer;
var a:matrice; n,m,l: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 sallelemente;
var i,j:byte;s:real;
begin
s:=0;
for i:=1 to n do
for j:=1 to n do
s:=s+a[i,j];
writeln('suma elementelor din matrice',s:5:2);
end;
procedure selementedp;
var i,j:byte;s:real;
begin
s:=0;
for i:=1 to n do
s:=s+a[i,i];
writeln('suma elementelor de pe diagonala principala',s:5:2);
end;
begin
citire;
afisare;
sallelemente;
selementedp
end.
7. Se introduce de la tastartura o matrice cu m linii si n coloane cu elemente numere intregi. Se cere sa se calculeze si sa se afiseze minumul de pe o linie l a matricei.
type matrice=array[1..100,1..100]of integer;
var a:matrice; n,m,l:byte;
procedure citire;
var i,j:byte;
begin
write('m=');readln(m);
write('n=');readln(n);
for i:=1 to m do
for j:=1 to n do
begin
write('a[',i,',',j,']=');readln(a[i,j]);
end;
write('l=');readln(l);
end;
procedure minim;
var i:byte; min:integer;
begin
min:=a[l,1];
for i:=1 to n do
if min>a[l,i] then min:=a[l,i];
writeln('min=',min);
end;
procedure afisare;
var i,j:byte;
begin
for i:=1 to m do begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
end;
begin
citire;
afisare;
minim;
end.