Creeaza.com - informatii profesionale despre


Evidentiem nevoile sociale din educatie - Referate profesionale unice
Acasa » scoala » informatica
LUCRARE - TABLOURI BIDIMENSIONALE

LUCRARE - TABLOURI BIDIMENSIONALE


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

Se da o matrice a patratica cu n x n elemente care are urmatoarele cerinte :

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 ?

e) Sa se calculeze suma elementelor matricei a de pe diagonala principala respectiv suma elementelor de pe diagonala secundara ?

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,1]=4

a [2,2]=5

a [2,3]=6

a [3,1]=7

a [3,2]=8

a [3,3]=9

1 2 3

Matricea initiala este : 4 5 6

7 8 9

Elementul maxim este :9 si se afla pe pozitia : 3 3

Elementul minim este :1 si se afla pe pozitia : 1 1

Maximul pe linia 1 este :3

Maximul pe linia 2 este :6

Maximul pe linia 3 este :9

Minimul pe coloana 1 este :1

Minimul pe coloana 2 este :2

Minimul pe coloana 3 este :3

Conturul matricei este : 1 2 3 7 8 9 4 6

Matricea cu liniile 1 si 2 interschimbate este :

4 5 6

1 2 3

7 8 9

Suma de pe diagonala principala este s1=15

Suma de pe diagonala principala este s2=15

BIBLIOGRAFIE

ATESTAT TESTE SI PROBLEME REZOLVATE :

Roxana TAMPLARU , Dana ROTOFEI , Nicolita GUTA , Mihaela GRINDEANU

Editura ARVES , 2003 , CRAIOVA

MANUAL INFORMATICA CLASA A-IX-A VARIANTA PASCAL :

Tudor SORIN

Editura L&S INFOMAT , 2002 , CRAIOVA





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.