Sunteți pe pagina 1din 16

COLEGIUL NAIONAL SPIRU HARET TECUCI

Elev: Nlbaru Roxana


Profesor ndrumtor: Gheorghiu Carmen
=MAI 2014=
Titlul lucrarii:
Matrici.Studiu de caz
prelucrari ale valorilor din zonele
determinate de diagonale
2
Memoriu ju!i"i#$!i%
Am ales aceasta lucrare deoarece tablourile constituie o arte
imortanta a algoritmicii! ce sta la ba"a multor alicatii ractice si de
laborator#
Prelucrarea elementelor din "onele determinate de diagonale este o
arte a tablourilor care necesita atentie! concentrare si cunostinte
sulimentare#
$
Ge&er$'i!$!i
TABLOURI
Structura de date este o colectie de date inzestrata cu informatii
structurale care permit identificarea si selectia componentelor.
Componentele unei structuri de date pot fi identificate si selectate fie prin
numele, fie prin intermediul relatiilor structurale. Cea mai simpla relatie
structurala este pozitia fiecarei componente in cadrul structurii.
Asupra unei structuri de date se pot aplica mai multe tipuri de operatii
:vizualizarea elementelor structurii sub diferite forme,
actualizarea(adaugarea, modificarea sau stergerea unei componente),
imbogatirea structurala(prin adaugarea unor informatii de legatura)
sortare(aranjarea componentelor intr-o anumita ordine stabilita de un anumit
criteriu de ordonare.
Din punct de vedere al continutului, structurile pot fi:
-omogene(toate componentele structurii sunt de acelasi tip)
-neomogene(componentele structurii sunt de tipuri diferite)
in functie de modul in care sunt memorate structurile de date se impart in
doua mari categorii:
-Structuri interne, sunt create in memoria interna A! a sistemului, si au un
caracter temporar, datorita faptului ca memoria interna este volatila.
%
-Structuri e"terne, sunt depozitate pe un suport de memorie e"terna (#ard-
dis$.flopp%-dis$), avand astfel un caracter permanent.
TABLOURI BIDIMENSIONALE
& matrice este un tabel cu elemente de acela'i tip, dispuse pe linii 'i
coloane. Datorit( acestei a'ez(ri a elementelor, o matrice este de fapt un
tablou bidimensional. )iecare element al matricii se afl( pe o anumit( linie 'i
pe o anumit( coloan(. *ozi+ia unui element pe linie se mai nume'te 'i
indicele linie, iar pozi+ia elementului pe coloan( se mai nume'te 'i indice de
coloan(.
Dac( not(m variabila matrice cu a, atunci elementul de pe linia i 'i
coloana j ,n matricea a se noteaz( cu a-i,j..
/lustrez ,n continuare o matrice a cu 0 linii 'i 1 coloane, av2nd ca
elemente numere naturale.
Se observ( cum fiecare element e reprezentat de dou( coordonate. De
e"emplu a-0.-3. 4 56, asta ,nseamn( c( elementul de pe linia 0 'i coloana 1
este 56.
& variabil( matrice se declar( asem(n(tor cu o variabil( vector, cu
deosebirea c( ,n loc de num(rul ma"im de elemente, trebuie sa preciz(m
dou( valori: num(rul ma"im de linii 'i num(rul ma"im de coloane.
Tip nume[nr1][nr2];
Dac( am declarat o matrice a cu ma"im 56 linii 'i 57 coloane, asta nu
,nseamn( c( trebuie s( folosim toate cele 576 de elemente ale sale. A'a cum
,n cazul unui vector defineam ca variabil( un num(r real de elemente
&
' 2 $ % & coloana
linia
(num(rul elementelor efectiv folosite), la fel pentru o matrice a vom defini
dou( variabile: un num(r real de linii 'i un num(r real de coloane, notate de
obicei cu n 'i m. 8n aceste condi+ii, ,n mod implicit indicii de linie vor fi
5,3...n iar cei de coloan( vor lua valori de la 5,3...m.
De e"emplu pentru o matrice a cu n linii 'i m coloane, elementele ei
sunt:
a-5,5., a-5,3., a-5,0., ..., a-5,n. linia 5
a-3,5., a-3,3., a-3,0., 9, a-3,n. linia 3
9999999999999999999999999.
a-m,5., a-m,3., a-m,0., 9, a-m,n. linia n
Parcurgerea unei matrici
Consider(m o matrice a, cu n linii 'i m coloane. *arcurgem ,ntr-un
ciclu liniile i45, 3, ..., n.*entru fiecare linie i, parcurgem ,ntr-un alt ciclu
coloanele acesteia j45, 3, ..., m. *entru fiecare valoare a lui i 'i j :vizit(m ;
elementul a-i,j., de pe linia i 'i coloana j. *rezint ,n continuare algoritmul de
parcurgere, precum 'i ordinea ,n care vor fi :vizitate; elementele matricii a.
Pentru i de la 1 la n execut
Pentru j de la 1 la m execut
<prelucreaz a[i,j]>
i45 j45 a-5,5.
j43 a-5,3.
999999999.
j4m a-5,m.
i43 j45 a-3.5.
j43 a-3,3.
....................................
j4m a-3,m.
...................................
i4n j45 a-n,5.
j43 a-n,3.
....................................
j4m a-n,m.
Citirea unei matrici de la tastatur
Citim mai ,n2i num(rul de linii 'i coloane, n respectiv m, apoi pentru a
citi elementele matricii a folosim algoritmul de mai sus: parcurgem ,n dou(
(
cicluri linile i45, 3, ..., n 'i coloanele j45, 3, ..., m 'i pentru fiecare linie i 'i
coloan( j, citim elementul a-i,j..
Pentru i de la 1 la n execut
Pentru j de la 1 la m execut
Citete (a[i,j])
Citirea unei matrici dintr-un fiier
*entru a ,nc(rca o matrice dintr-un fi'ier este necesar s( parcurgem
fi'ierul dup( care s( copiem datele ,n matrice. S( presupunem c( fi'ierul se
nume'te Date.in 'i pe prima linie sunt trecute num(rul de linii 'i de coloane
ale matricii (n 'i m). *e urm(toarele n linii se g(sesc c2te m numere ce
reprezint( elementele matricei, numere ,ntregi, desp(r+ite printr-un spa+iu.
Afiarea unei matrici
)olosim tot idea algoritmului de parcurgere descris anterior, la citirea
unei matrici. *entru a afi'a fiecare linie a matricii pe un r2nd de ecran vom
proceda ,n felul urm(tor: parcurgem ,ntr-un ciclu liniile i45, 3, ..., n 'i pentru
fiecare linie i afi'(m elemenele liniei i pe r2nd nou al ecranului 'i mut(m
cursorul la ,nceputul r2ndului urm(tor. <om proiecta apoi un alt ciclu, ,n
care parcurgem coloanele j45, 3, ..., m ale liniei i, 'i la fiecare pas afi'(m
elementul a-i,j. cu c2te un spa+iu ,ntre ele.
I&mu'!ire$ $ (ou$ m$!ri#i
/nmultimea este posibila daca numarul de coloane de la prima matrice
este egal cu numarul de linii de la a doua martice. /nmultirea dintre doua
matrici se face inmultind ementele de pe o linie de la prima matrice
cu elementele de pe o coloana de la a doua matrice.
Aici vom inmulti o matrice 0=0 (de ordin 0 40 r2nduri, 0 coloane) cu alta
matrice 0=0 (de ordin 040 r2nduri, 0 coloane).
!atrice A !atrice >
a55 a53 a50
a35 a33 a30
a05 a03 a00
"
b55 b53 b50
b35 b33 b30
b05 b03 b00
!atricea rezultat( va fi o matrice 0=0. <a trebui s( calculeze fiecare
celul( a matricei rezultat separat. S( presupunem rezultatul va fi o martice
notata cu ?.
)
*asul 5: Pentru a calcula X
?55 este celula ,n cazul ,n care ,mbin( primul r2nd (linie), cu prima coloan(.
Deci, ,n scopul de a calcula rezultatul vom folosi primul r2nd(linie) din
matricea A, 'i prima coloana dim matricea >.
!atricea A !atricea > ezulta matricea ?
a55 a53 a50
a35 a33 a30
a05 a03 a00
@
b55 b53 b50
b35 b33 b30
b05 b03 b00
4
"55 "53 "50
"35 "33 "30
"05 "03 "00
Acum, "55 poate fi calculat ca ! " a#$ % a&#$& % a'#$'
*asul 3: Pentru a calcula !&
"53 este celula ,n cazul ,n care ,mbin( primul r2nd(linie) cu a doua coloan(.
Deci, ,n scopul de a calcula rezultatul vom folosi primul r2nd din matricea A
'i a doua coloana din matricea >
!atricea A !atricea > ezulta matricea ?
a55 a53 a50
a35 a33 a30
a05 a03 a00
@
b55 b53 b50
b35 b33 b30
b05 b03 b00
4
"55 "53 "50
"35 "33 "30
"05 "03 "00
Acum, "53 poate fi calculat ca !& " a#$& % a&#$&& % a'#$'&
Analog se calculeaza !'4a#$' % a&#$&' % a'#$''.
ezultatul este:
a55@b55Aa53@b35Aa50@
b05
a55@b53Aa53@b33Aa50@
b03
a55@b50Aa53@b30Aa50@
b00
a35@b55Aa33@b35Aa30@
b05
a35@b53Aa33@b33Aa30@
b03
a35@b50Aa33@b30Aa30@
b00
a05@b55Aa03@b35Aa00@
b05
a05@b53Aa03@b33Aa00@
b03
a05@b50Aa03@b30Aa00@
b00
*
Re)o'%$re$ !eore!i#*

+n re"olvarea alicatiei am aelat la o rocedura ,meniu- care ofera
utili"atorului osibilitatea alegerii uneia dintre otiunile existente
"0-Introducere date"<<endl;
"1-Verificarea proprietatii de simetrie";
"2-Calculul ma a val. pp de D.D.S.";
"3-Calculul min si ma de S.D.S.";
"!-"arasire pro#ram";
Pentru fiecare otiune! am construit subrograme adecvate! care
re"olva eficient cerintele#
Astfel! am construit func.iile:
/introducere
/verif
/ma
/det
/meniu

0
'1
''
Li!i&+,u' -ro+r$mu'ui.
$include<iostream.%&
$include<conio.%&
$include<mat%.%&
int a'10('10()n;
void introducere*+
,
int i)-;
cout<<"Introduceti dimensiunea matricii";
cin&&n;
for*i.1;i<.n;i//+
for*-.1;-<.n;-//+
,
cout<<"a'"<<i<<"('"<<-<<"(.";
cin&&a'i('-(;
0
0
int verif*int a'10('10()int n+
,
int i)-;
for*i.1;i<.n-1;i//+
for*-.i/1;-<.n;-//+
if*a'i('-(1.a'-('i(+
return 0;
return 1;
0
float ma*int a'10('10()int n+
,
int i)-)s.0)nr.0;
for*i.1;i<.n-1;i//+
for*-.1;-<.n-i;-//+
'2
if*s2rt*a'i('-(+..int*s2rt*a'i('-(+++
,
nr//;
s.s/a'i('-(;
0
if*nr..0+
return 0;
else
return *float+s3nr;
0
void det*int a'10('10()int n+
,
int i)-)min.a'2('n()ma.a'2('n(;
for*i.3;i<.n;i//+
for*-.n-i/2;-<.n;-//+
if*a'i('-(<min+
min.a'i('-(;
else
if*a'i('-(&ma+
ma.a'i('-(;
cout<<"min."<<min<<endl;
cout<<"ma."<<ma;
0
void meniu*+
,c%ar c)4;
float t;
do
,
clrscr*+;
cout<<"0-Introducere date"<<endl;
cout<<"1-Verificarea proprietatii de
simetrie"<<endl;
cout<<"2-Calculul ma a val. pp de D.D.S."<<endl;
cout<<"3-Calculul min si ma de S.D.S."<<endl;
cout<<"!-"arasire pro#ram"<<endl;
cout<<"Introduceti optiunea5 ";
cin&&c;
'$
if*c..606+
,
introducere*+;
0
if*c..616+
,
if*verif*a)n++
cout<<"7atricea este simetrica";
else
cout<<"7atricea nu este simetrica";
cout<<endl;
cout<<"apasati o litera";
cin&&4;
0
if*c..626+
,
t.ma*a)n+;
if*t&0+
cout<<"ma."<<ma*a)n+;
else
cout<<"8u sunt valori pp D.D.S.";
cout<<endl;
cout<<"apasati o litera";
cin&&4;
0
if*c..636+
,
det*a)n+;
cout<<endl;
cout<<"apasati o litera";
cin&&4;
0
04%ile*c1.6!6+;
0
void main*+
,
meniu*+;
0
'%
/i0'io+r$"ie
'#2aite 3#! Prata 4t#! 3artin 5# !-C Primer Plus-! 6o7ard 2# 4ans 8 C1!
'0*(
2#9amsa :#! :lander ;#/ <otul desre C si C==# 3anual fundamental de
rogramare in C si C==# <eora 2112
$#4childt 6# > C manual comlet# <eora '00*
%# 4childt 6# > C== manual comlet# <eora '00*
&#:ernighan ?#! Ritchie 5# > <he C Programming ;anguage! Printice
6all!'0**
(#Cristea @#! :alis" E#! Giumale C#! Panoiu A#/ ;imbaBul C standard! <eora
'002
)#3arian Gh#! si alti/ 3odele de grile entru examenele de diloma si
absolvire! Editura Cniversitaria 211% +4?N 0)$/*1%$/&1$/$
*#Patrascoiu D#! 3arian Gh#! 3itroi N# > Elemente de grafuri si
combinarorica# 3etode! algoritmi si rograme! Editura A;; '00$ +4?N
0)$/&)'/1')/E
0# Patrascoiu D#! 3itroi N# ! 3arian Gh#/ ;imbaBul C! <eorie si rograme!
Editura 3icrocomuter 4ervice! Craiova! '00%#
'1#Petrovici @#! Goicea A# > Programare in limbaBul C! Ed# <ehnica '0**
''#3arian Gh#! ?adica C#! ;ascu 3#!+ordache 4#/;imbaBul C/Alicatii!
Editura 4irit Romanesc! Craiova '00)
'2#3ocanu 3#! 3arian Gh#! ?adica +#! C#! ?adica P#! C# / $$$ robleme de
rogramare! Editura <EDRA! ?ucuresti! '00$#
'&
Cu-ri&
'#<itlul lucrariiFFFFFFFFF#'
2#3emoriu BustificativFFFFFF##2
$#GeneralitatiFFFFFFFFFF$
%#Re"olvare teoreticaFFFFFF##*
&#;isting/ul rogramuluiFFFFF''
(#?ibliografieFFFFFFFFF#'%
'(

S-ar putea să vă placă și

  • Limbaj Arhitectural Note de Curs
    Limbaj Arhitectural Note de Curs
    Document51 pagini
    Limbaj Arhitectural Note de Curs
    Cătălina Dima
    100% (3)
  • Citeste Inaite Sa Incepi!
    Citeste Inaite Sa Incepi!
    Document1 pagină
    Citeste Inaite Sa Incepi!
    Nalbaru Roxana Georgiana
    Încă nu există evaluări
  • Resurse Emu
    Resurse Emu
    Document36 pagini
    Resurse Emu
    Alexandra Mera
    Încă nu există evaluări
  • Parcul National
    Parcul National
    Document4 pagini
    Parcul National
    Nalbaru Roxana Georgiana
    Încă nu există evaluări
  • Teme Idrat 2017-18
    Teme Idrat 2017-18
    Document7 pagini
    Teme Idrat 2017-18
    Nalbaru Roxana Georgiana
    Încă nu există evaluări
  • Tema
    Tema
    Document10 pagini
    Tema
    Nalbaru Roxana Georgiana
    Încă nu există evaluări
  • Introducere Mediu
    Introducere Mediu
    Document18 pagini
    Introducere Mediu
    Nalbaru Roxana Georgiana
    Încă nu există evaluări
  • Cursuri Sandu
    Cursuri Sandu
    Document32 pagini
    Cursuri Sandu
    Nalbaru Roxana Georgiana
    Încă nu există evaluări
  • Impartirea Populatiei
    Impartirea Populatiei
    Document4 pagini
    Impartirea Populatiei
    Nalbaru Roxana Georgiana
    Încă nu există evaluări
  • Cadastru 65 74
    Cadastru 65 74
    Document5 pagini
    Cadastru 65 74
    Nalbaru Roxana Georgiana
    Încă nu există evaluări
  • Tema Eseu An 3 Doctrine 2017 PDF
    Tema Eseu An 3 Doctrine 2017 PDF
    Document1 pagină
    Tema Eseu An 3 Doctrine 2017 PDF
    Nalbaru Roxana Georgiana
    Încă nu există evaluări
  • Curs 1 Definitii
    Curs 1 Definitii
    Document22 pagini
    Curs 1 Definitii
    Nalbaru Roxana Georgiana
    Încă nu există evaluări
  • Cadastru 1 11gk
    Cadastru 1 11gk
    Document24 pagini
    Cadastru 1 11gk
    Nalbaru Roxana Georgiana
    Încă nu există evaluări
  • Constructii LEMN An 2 Ed 3 2006
    Constructii LEMN An 2 Ed 3 2006
    Document147 pagini
    Constructii LEMN An 2 Ed 3 2006
    Felicia Militaru
    100% (11)
  • Curs 2 - Formarea Oraşelor
    Curs 2 - Formarea Oraşelor
    Document25 pagini
    Curs 2 - Formarea Oraşelor
    Nalbaru Roxana Georgiana
    Încă nu există evaluări
  • 2-2 Ape de Suprafata-1da
    2-2 Ape de Suprafata-1da
    Document25 pagini
    2-2 Ape de Suprafata-1da
    Nalbaru Roxana Georgiana
    Încă nu există evaluări
  • Resurse Emu
    Resurse Emu
    Document36 pagini
    Resurse Emu
    Alexandra Mera
    Încă nu există evaluări
  • Introducere Mediu
    Introducere Mediu
    Document18 pagini
    Introducere Mediu
    Nalbaru Roxana Georgiana
    Încă nu există evaluări