Colegiul National "Nicolae Titulescu"
Craiova
LUCRARE DE ATESTAT
TABLOURI BIDIMENSIONALE
ARGUMENT
Tablourile bidimensionale reprezinta o parte importanta din materia de studiu a unui elev de liceu . Prin studiul tablourilor bidimensionale sau matricilor s-a putut usura rezolvarea exercitiilor si problemelor .Datorita modului simplu de invatare si retinere a notiunilor esentiale si atractiei pentru acest capitol din informatica , eu am ales tablourile bidimensionale ca tema pentru atestat
Cap I. Notiuni introductive
1.Tablouri bidimensionale
Def : Prin tablou intelegem o strucutura de date, toate de acelasi fel, care ocupa locatii successive in memorie.
Tablourile sunt de mai multe feluri dar cele mai folosite sunt tablourile unidimensionale si bidimensionale (matrici).
Def :Tablourile bidimensionale reprezinta o structura de date, toate de acelasi fel organizate pe linii si coloane.
Schematic arata astfel :
Coloana 1 |
Coloana2 |
Coloana 3 |
Coloana n |
||
Linia 1 |
a[1,1] |
a[1,2] |
a[1,3] |
a[1,m] |
|
Linia 2 |
a[2,1] |
a[2,2] |
a[2,3] |
a[2,m] |
|
Linia 3 |
a[3,1] |
a[3,2] |
a[3,3] |
a[3,m] |
|
Linia n |
a[n,1] |
a[n,2] |
a[n,3] |
a[n,m] |
1 |
4 |
12 |
3 |
0 |
1 |
0 |
22 |
4 |
3 |
1 |
1 |
-matrice cu n x m elemente
-a[i,j] : i=indice de linie
j=indice de coloana
-exemplu :n=3 si m=4 : a[2,3]=0
O categorie aparte a matricilor o constituie matricile patratice ,in care numarul de linii este egal cu numarul de coloane adica n=m
Declararea tablourilor bidimensionale
Se realizeaza prin doua metode:
a) type nume_tip = array[tip_indice1,tip_indice2] of tip_componenta
unde :tip_indice1 =indice de linie
tip_indice2 =indice de coloana
tip componenta = tipul de date din care fac parte elementele matricei
nume_tip = numele atribuit de utilizator tipului de date
array = cuvant cheie
of = cuvant cheie
exemple:
type tablou = array[1..5,1..3] of integer
type matrice = array[1..10,1..10] of integer
b) var a :array[tip_indice1,tip_indice2] of tip_componenta
unde: a = numele matricei
tip_indice1 = indice de linie
tip_indice2 = indice de coloana
array = cuvant cheie
of = cuvant cheie
var = cuvant cheie
tip_componenta = tipul de date din care fac parte elementele matricei
In aceasta varianta se spune ca s-a declarat un tip de date anonim
exemple:
var t : array[-5..5,5..10] of char;
t[-3,7] = 'A'
var m :array['a'..'m',1..10] of boolean
m['b',3] = true
CAP II . Operatii cu tablouri bidimensionale
Se presupune ca avem o matrice cu n linii si m coloane si ca avem urmatoarele declaratii
A : array [1..10,1..10] of integer ;
n , i , j : integer ;
1) Citirea tablourilor bidimensionale
for i : = 1 to n do
for j : = 1 to m do
begin
write ('a[', i ,',', j ,'] =') ;
readln (a[i ,j]) ;
end;
2) Tiparirea tablourilor bidimensionale
a) pe un singur rand cu spatiu intre elemente
for i : = 1 to n do
for j : = 1 to m do
write (a[i,j],' ') ;
end ;
b) pe randuri diferite
for i : = 1 to n do
for j : = 1 to m do
writeln (a[I,j]) ;
c) sub forma de matrice
for i : = 1 to n do
begin
for j : = 1 to m do
write (a[i,j]:3) ;
writeln ;
end ;
3) Aflarea sumei si produsului elementelor
program suma_si_produs ;
type matrice = array[1..10,1..10] of integer ;
var a : matrice ;
n , I , j , S , P : integer ;
Begin
write ('n=') ; readln(n) ;
S : = 0
P : = 1
for i : = 1 to n do
for j : = 1 to m do
begin
S : = S + a[i,j] ;
P : = P * a[i,j] ;
end ; End.
4) Aflarea simultana a maximului si minimului
program minim_si_maxim ;
type matrice = array[1..10,1..10] of integer ;
var a : matrice ;
n , i , j , min , max : integer ;
Begin
Write ('n=') ; readln (n) ;
min : =a[1,1] ;
max : = a[1,1] ;
for i : = 1 to n do
for j : = 1 to m do
begin
if a[i,j] > max them max : = a[i,j] ;
if a[i,j] < min then min : = a[i,j] ;
end ;
End .
5) Afisarea elementelor matricei in ordinea rezultata parcurgerii acesteia in spirala
program spirala ;
type matrice = array[1..10,1..10] of integer ;
vat a : matrice ;
n, i, j, k : integer ;
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 ;
for k : = 1 to n div 2 +1 do
begin
for i : = k to n-k+1 do writeln (a[k,i]) ;
for i : = k +1 to n-k+1 do writeln (a[i,n-k+1]) ;
for i : = n-k downto k do writeln (a[n-k+1,i]) ;
for i : = n-k downto k+1 do writeln (a[i,k]) ;
end;
End.
6) Interschimbarea liniilor unei matrice
Se citeste un tablou cu m linii si n coloane. Se citesc de asemenea si doua numere naturale, distincte, x si y, cuprinse intre 1 si m. Se cere sa se schimbe liniile x si y. La inceput se va afisa tabloul initial, apoi cel obtinut prin interschimbarea liniilor x si y
Program inversare ;
type matrice = array[1..10,1..10] of byte ;
var a : matrice ;
m , n , i , j , x , y , aux : integer ;
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 ('x=') ; readln (x) ;
write ('y=') ; readln (y) ;
for i := 1 to m do
begin
for j : = 1 to n do
write (a[i,j],' ') ;
writeln ;
for j : = 1 to n do
begin
aux : = a[x,j] ;
a[x,j] : = a[j,y] ;
a[j,y] : = aux ;
end ;
writeln ;
for i : = 1 to m do
begin
for j = 1 to n do
write (a[i,j],' ') ;
writeln ;
end ;
End.
Cap III . Aplicatii cu matrici
a) Sa se citeasca si sa se tipareasca matricea a ?
b) Sa se afiseze minimul si maximul matricei precum si pozitiile pe care se afla acestia ?
c) Sa se realizeze o procedura prin care sa se interschimbe doua linii oarecare din matrice ?
d) Sa se afiseze maximul elementelor matricei pe linie respectiv minimul pe coloane ?
program atestat;
type matrice=array[1..10,1..10] of integer;
var a : matrice;
s1, s2, n, i, j: integer;
max , min:integer;
procedure citire_matrice(var a:matrice;var n:integer
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 tiparire_matrice(a:matrice ; n:integer);
begin
for i : = 1 to n do
begin
for j : =1 to n do
write(a[i,j]:3,' ');
writeln;
end;
end;
procedure pozitie(nr:integer);
begin
for i:=1 to n do
for j:=1 to n do
if a[i,j]=nr then
writeln(i,' ',j);
end;
procedure maxim_si_minim(a:matrice;n:integer);
begin
max:=a[1,1];
min:=a[1,1];
for i:=1 to n do
for j:=1 to n do
begin
if a[i,j]>max then
max:=a[i,j];
if a[i,j]<min then
min:=a[i,j];
end;
end;
procedure maxim_pe_linii(a:matrice;n:integer;k:integer);
var max_lin:integer;
begin
max_lin : =a[k,1];
for j : =1 to n do
if a[k,j] > max_lin then max_lin : =a[k,j];
writeln('maximul pe linia ', k ,' este :',max_lin);
end;
procedure minim_pe_coloane(a:matrice;n:integer;k:integer);
var min_col:integer;
begin
min_col:=a[1,k];
for i:=1 to n do
if a[1,k]<min_col then min_col:=a[1,k];
writeln('minimul pe coloana ',k,' este :',min_col);
end;
procedure interschimbare(a:matrice;n:integer);
var aux : matrice;
begin
i : =1;
for j : =1 to n do
aux[i,j]:=a[i,j];
i:=2;
for j : =1 to n do
begin
a[1,j] : =a[i,j];
a[i,j] : =aux[1,j];
end;
writeln(' Matricea interschimbata intre linia 1 si linia 2 este ');
for i : =1 to n do
begin
for j : =1 to n do
write(a[i,j],' ');
writeln;
end;
end;
procedure contur(a:matrice;n:integer);
begin
i :=1;
for j : =1 to n do
write(a[i,j],' ,);
i :=n;
for j : =1 to n do
write(a[i,j],' ,);
j:=1;
for i : =2 to n-1 do
write(a[i,j],' ,);
j : =n;
for i : =2 to n-1 do
write(a[i,j],' ,);
writeln;
end;
procedure sum_diag_princ(a:matrice;n:integer);
begin
s1:=0;
for i:=1 to n do
for j:=1 to n do
if i=j then
s1:=s1+a[i,j];
write(,s1=',s1);
writeln;
end;
procedure suma_diag_sec(a:matrice;n:integer);
begin
s2:=0;
for i :=1 to n do
for j :=1 to n do
if (i+j)=n+1 then
s2:=s2+a[i,j];
write(,s2=',s2);
writeln;
end;
Begin
citire_matrice(a,n);
tiparire_matrice(a,n);
maxim_si_minim(a,n);
writeln(,Elementul maxim este :',max,' si se afla pe pozitia:');
pozitie(max);
writeln(,Elementul minim este :',min,' si se afla pe pozitia:');
pozitie(min);
for i :=1 to n do
maxim_pe_linii(a,n,i);
for j :=1 to n do
minim_pe_coloane(a,n,j);
write(,conturul matricei este: ,);
contur(a,n);
interschimbare(a,n);
write('Suma de pe diagonala principala este ');
suma_diagonala_principala(a,n);
write('suma de pe diagonala secundara este ');
suma_diagonala_secundara(a,n);
End.
EXECUTAREA PROGRAMULUI DE LA APLICATIE
N =3
a [1,1]=1
a [1,2]=1
a [1,3]=3
a [2,2]=5
a [2,3]=6
a [3,1]=7
a [3,2]=8
a [3,3]=9
1 2 3
BIBLIOGRAFIE
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |