Documente Academic
Documente Profesional
Documente Cultură
Cuprins
Pagina
2 2 2 3 4 5 6 6 8 9 9
10.2. Tablouri unidimensionale 10.3 10.4 Operaii cu vectori Exemple de prelucrri ale datelor organizate n vectori
Test de autoevaluare Lucrare de verificare unitatea de nvare nr. 10 Rspunsuri i comentarii la ntrebrile din testele de autoevaluare Recapitulare Bibliografie unitatea de nvare nr. 10
Tablouri
OBIECTIVELE unitii de nvare nr. 10 Principalele obiective ale Unitii de nvare nr. 10 sunt:
nelegerea organizrii datelor n tablouri Familiarizarea cu tablourile unidimensionale Modelarea datelor de prelucrat pe principiul utilizrii tablourilor Implementarea cu succes a problemelor care utilizeaz vectori
10. TABLOURI
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. n funcie de numrul indicilor utilizai pentru a referi elementele tabloului, putem ntlni tablouri unidimensionale (vectorii) sau multidimensionale (matricile sunt tablouri bidimensionale).
vector
Tablouri ntregi sau expresii constante ntregi (a cror valoare este evaluat la compilare) care reprezint limitele superioare ale indicilor tabloului.
De exemplu, n secvena: int k[50] ; char c[8] ; float a[100] ; se declar tablourile c , k i a cu, respectiv, 50 de elemente ntregi, 8 elemente de tip caracter i 100 elemente de tip float.
Tablouri double alpha[5], beta[5], gama[5]; int i=2; alpha[2*i-1] = 5.78; alpha[0]=2*beta[i]+3.5; gama[i]=alpha[i]+beta[i]; //permis gama=alpha+beta; //nepermis Variabilele tablou pot fi iniializate n momentul declarrii: declaraie_tablou=list_valori; Valorile din lista de valori sunt separate prin virgul, iar ntreaga list este inclus ntre acolade: Exemple: 1. int vector[6]={100,101,102,103,104,105};
[5]
La declararea unui vector cu iniializarea elementelor sale, numrul maxim de elemente ale tabloului poate fi omis, caz n care compilatorul determin automat mrimea tabloului, n funcie de numrul elementelor iniializate. Exemplu: char tab[ ]={ A, C, D, C};
[0]
[3]
[0] [4] Adresa elementului de indice i dintr-un tablou unidimensional poate fi calculat astfel: adresa_elementului_i = adresa_de_baz + i lungime_element
Tablouri double a[100]; int n,i; cout<<Dati numarul de elemente al vectorului; cin>>n; for (i=0; i<n; i++) { cout<<a["<<i<<]=; //afiarea unui mesaj prealabil citirii fiecrui element cin>>a[i]; //citirea valorii elementului de indice i }
Afiarea elementelor unui vector:
cout<<Vectorul introdus este:<<endl; for (i=0; i<n i++) cout<<a[i]<< ; b) Afiarea elementelor unui vector n ordine invers: cout<<Elementele vectorului n ordine invers:<<endl; for (i=n-1; i>=0 i--) cout<<a[i]<< ;
Tablouri cout<<"elementul "<<i<<":"; cin>>v[i];} max=v[1]; for(i=2;i<=n;i++) if (max<v[i]) max=v[i]; cout<<"maximul elementelor vectorului este "<<s; getch(); }
Tablouri
Test de autoevaluare 10
1. Se citete un vector cu n componente reale. Aflai minimul dintre acestea. 2. Se citesc doi vectori a i b, avnd elemente ntregi. Aflai suma c a celor doi vectori. Elementele ci, ale vectorului c, se calculeaz astfel: ci=ai+bi, pentru orice i, ntre 1 i n.
xy = (+ + 2 xy =( xx y ) y)
Tablouri getch( ); }
2. ntr-un ir de numere ntregi, s se afieze
suma elementelor de pe poziiile pare i suma celor de pe poziii impare. Exemplu: Date de intrare n=6 numere 3 8 5 4 6 7 Date de ieire simp=15 spar=18. #include <iostream.h> #include <conio.h> void main( ) { int n, v[50],i,s=0; cout<<"Dati numarul elementelor vectorului"; cin >>n; for(i=1;i<=n;i++) { cout<<"elementul "<<i<<":"; cin>>v[i]; if (i%2==1) s=s+v[i];} cout<<"suma elementelor de pe pozitiile impare este "<<s; getch( ); } 3. Se citete un numr natural n, reprezentnd un cod ce trebuie reprezentat binar. S se scrie un program care face aceast transformare. Rezolvare: Problema se reduce la a transforma un numr din baza 10 n baza 2. Algoritmul de transformare presupune mprirea numrului respectiv la 2 i reinerea restului acestei mpriri i, att timp ct ctul mpririi este diferit de 0, acesta va trece n locul dempritului, operaia repetndu-se. Rezultatul transformrii reprezint succesiunea de resturi obinute, n ordine invers. Programul C++, care face acest transformare este urmtorul: #include <iostream.h> #include <conio.h> void main(){ int n, baza2[50],k=0,i; /* vectorul baza2 retine cifrele binare (resturile la 2) ale numarului, in ordinea in care acestea sunt aflate*/ cout<<"Codul =";cin >>n; while (n!=0) { k++; baza2[k]=n%2; n=n/2;}
8
Tablouri cout<<"Codificarea binara a lui "<<n<<" este "; for(i=k;i>=1;i--) cout<<baza2[i]; getch(); }
Tablouri
Recapitulare
Datele de acelai tip pot fi organizate n tablouri, n vederea prelucrrii, acestea permind prelucrarea lor, atunci cnd sunt n volum mare. Elementele unui tablou se memoreaz n locaii succesive de memorie i pot fi identificate prin numele tabloului i indicii (numere ntregi) care reprezint poziia elementului n cadrul tabloului. n funcie de numrul indicilor utilizai pentru a referi elementele tabloului, putem ntlni tablouri unidimensionale (vectorii) multidimensionale (matricile sunt tablouri bidimensionale).
nainte de utilizare, variabilele de tip tablou trebuie declarate. Sintaxa declarrii unei asemenea variabile este: nume_tablou [dim_1][dim_2][dim_n] ; unde:
tip reprezint tipul elementelor tabloului (tip de baz), iar dim_1,dim_2,...,dim_n sunt numere ntregi sau expresii constante ntregi mrul(a cror valoare este evaluat la compilare) care reprezint numrul maxim de elemente ale tabloului. Tablourile unidimensionale sunt tablouri cu un singur indice (vectori). Dac tabloul conine n elemente, indicii elementelor au valori ntregi din intervalul [0, n-1]. Declararea unei variabile de tip tablou unidimensional se face astflel: tip nume[dimmax], unde tip=tipul de date al elementelor nume=numele tabloului dimmax=numrul maxim de elemente Identificarea unui element dintr-un vector se face pe baza indicelui acestuia, astfel: nume[i] identific n vectorul nume elmentul de indice i
10
Tablouri
Bibliografie
11