Sunteți pe pagina 1din 26

1

ING.LUNGU IUDIT
DEFINIIE
Un tablou este o colecie de date, de acelai tip,
situate ntr-o zon de memorie continu (elementele
tabloului se afl la adrese succesive).
Tablourile sunt variabile compuse (structurate),
deoarece grupeaz mai multe elemente.
Variabilele tablou au nume, iar tipul tabloului este
dat de tipul elementelor sale.
Elementele tabloului pot fi referite prin numele
tabloului i indicii (numere ntregi) care reprezint
poziia elementului n cadrul tabloului.
2
ING.LUNGU IUDIT
MOD DE DECLARARE
tip nume_tablou[nr_elemente_1]
*nr_elemente_2+*nr_elemente_n];
ex: int a[2][3];
ING.LUNGU IUDIT
3
TABLOUL CU O DIMENSIUNE -
VECTORUL
ING.LUNGU IUDIT
4
VECTORI
Un vector (array) este un tablou
unidimensional (tablouri cu un singur indice).
Se declar n felul urmtor:
tip nume[nr_elemente];
// exemplu
// 5 reprezinta numarul de elemente
nr_elemente trebuie s fie o constant deoarece
mrimea vectorilor nu poate fi determinat n
timpul execuiei(structura statica).
float a[10];
ING.LUNGU IUDIT
5
Iniializarea vectorilor
Se pot atribui valori elementelor la declarare
Ex:
int a[5]={10,20,30,40,50};
float a[3]={0.2,0.1,0.5};
char b*3+=,a,b,c,\0-; sau abc
valori
indici
ING.LUNGU IUDIT
6
a b c nul
0 1 2 3
Referirea la elementele unui vector
Se face n urmtorul mod
nume[indice]
Nume numele vectorului
Indice numrul de ordine al elementului n
cadrul vectorului
Observaii
adresa primului element fiind adresa vectorului,
iar indicele reprezentnd deplasarea elementului
fa de adresa vectorului, indicele primului
element este 0.
ING.LUNGU IUDIT
7
Parcurgerea elementelor unui vector
De la primul element la ultimul
De la ultimul element la primul
ING.LUNGU IUDIT
8
De la primul element la ultimul element
#include<iostream>
using namespace std;
int main()
{
int n,i,a[10];
// i-indicele elementului
// n-lungimea logica a vectorului
// a- vect cu dim de max.10
cout<<"n=";cin>>n;
for(i=0;i<n;i++)
{
a[i]=i;
cout<<a[i]<<" ";
}
return 0;
}
ING.LUNGU IUDIT
9
De la ultimul element la primul element
exerciiu
#include<iostream>
using namespace std;
int main()
{
int n,i,a[10];
cout<<"n=";cin>>n;
for(i=n-1;i>=0;i--)
{
a[i]=i;
cout<<a[i]<<" ";
}
return 0;
}
ING.LUNGU IUDIT
10
Aplicaii
Aplicaia 1
Se citesc de la tastatur cel mult 10 numere
ntregi. S se calculeze media aritmetic a
numerelor strict pozitive. Pentru memorarea
numerelor se va folosi o structur de date de
tip vector
ING.LUNGU IUDIT
11
Rezolvare
#include<iostream>
using namespace std;
int main()
{
int n,i,a[10],k=0,s=0;
cout<<"n=";cin>>n;
for(i=0;i<n;i++)
{
cout<<"a["<<i+1<<"]=";
cin>>a[i];
}
for(i=0;i<n;i++)
{
if (a[i]>0)
{
s=s+a[i];
k++;
}
}
cout<<"media"<<(float)s/k;
return 0;
}
ING.LUNGU IUDIT
12
Aplicaia 2
Se introduc de la tastatur cel mult 100 de
numere ntregi. S se afieze n ordine invers
numerele citite.
ING.LUNGU IUDIT
13
TABLOUL CU DOU DIMENSIUNI -
MATRICEA
ING.LUNGU IUDIT
14
Un tablou memorie cu dou dimensiuni
Se declar n felul urmtor:
tip nume[nr_linii][nr_col];
// exemplu
// o matrice cu 5 linii i 3 coloane
nr_elemente trebuie s fie o constant deoarece
mrimea nu poate fi determinat n timpul
execuiei
ING.LUNGU IUDIT
15
MATRICI
Iniializarea matricilor
Se pot atribui valori elementelor la declarare
Ex:
int a[2][3]={10,20,30,40,50};
float a[2][2]={0.2,0.1,0.5,0.5};
Observ.
Memorarea se face linie cu linie
ING.LUNGU IUDIT
16
Referirea la elementele unei matrici
Se face n urmtorul mod
nume[ind1][ind2];
Nume numele vectorului
Ind1 numrul liniei
Ind2 numrul coloanei
Observaii
adresa primului element fiind adresa vectorului,
iar indicele reprezentnd deplasarea elementului
fa de adresa vectorului, indicele primului
element este 0,0
ING.LUNGU IUDIT
17
Parcurgerea elementelor unei matrici
De la primul element la ultimul
De la ultimul element la primul
ING.LUNGU IUDIT
18
De la primul element la ultimul
element
#include<iostream>
using namespace std;
int main()
{
int n,m,i,j,a[10][10];
cout<<"n=";cin>>n;
cout<<m=";cin>>m;
for(i=0;i<n;i++)
for(j=0;i<m;j++)
{
a[i][j]=j;
cout<<a[i]<<" ";
}
return 0;
}
ING.LUNGU IUDIT
19
De la ultimul element la primul element
exerciiu
#include<iostream>
using namespace std;
int main()
{
int n,i,a[10];
cout<<"n=";cin>>n;
for(i=n-1;i>=0;i--)
{
a[i]=i;
cout<<a[i]<<" ";
}
return 0;
}
ING.LUNGU IUDIT
20
ING.LUNGU IUDIT
21
1. Definiie
Rearanjeaz elementele vectorului astfel nct
ntre elementele sale s existe o relaie de
ordine
ING.LUNGU IUDIT
22
2. Sortarea prin selectarea min(max)
Se determin minimul dintre valorile reinute
Se trece pe prima poziie
Se determin minimul ncepnd cu a doua poziie
Se trece pe poziia a doua
.
Se determin minimul ncepnd cu penultima poziie
Se trece pe penultima poziie
ING.LUNGU IUDIT
23
http://www.youtube.com/watch?v=Ns4TPTC8whw
#include<iostream>
using namespace std;
int main()
{
int a[10],n,i,j,k,man,min;
cout<<"n=";cin>>n;
for(i=0;i<n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
for(i=0;i<n-1;i++)
{
min=a[i];k=i;
for(j=i+1;j<n;j++)
if(a[j]<min)
{min=a[j];k=j;}
man=a[k];
a[k]=a[i];
a[i]=man;
}
for(i=0;i<n;i++)
cout<<a[i]<<endl;
return 0;
}
ING.LUNGU IUDIT
24
3. Sortarea prin interschimbare
Se parcurge variabila inversnd coninuturile
componentelor alturate care nu sunt n
ordine cresctoare
.
Se repet pn cnd are loc o parcurgere la
care nu se fac inversri
ING.LUNGU IUDIT
25
http://www.youtube.com/watch?v=lyZQPjUT5B4&feature=relmfu
#include<iostream>
using namespace std;
int main()
{
int a[10],n,i,man,gasit;
cout<<"n=";cin>>n;
for(i=0;i<n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
do
{gasit=0;
for(i=0;i<n-1;i++)
{if(a[i]>a[i+1])
{man=a[i];a[i]=a[i+1];a[i+1]=man; gasit=1;}}}
while(gasit);
for(i=0;i<n;i++)
cout<<a[i]<<endl;
return 0;
}
ING.LUNGU IUDIT
26