310 likes | 1.33k Views
Tablouri unidimensionale (vector i ). Tablouri unidimensionale (vector i ). Tablouri unidimensionale. Numărul de variabile ce pot fi declarate și utilizate într-o aplicație
E N D
Tablouriunidimensionale Numărul de variabile ce pot fi declarate și utilizate într-o aplicație este limitat. Există aplicații care necesită memorarea și prelucrarea unor serii de sute și mii de valori. Accesarea unui număr mare de variabile este anevoios și generator de erori. Pentru a rezolva această problemă au fost create structuri de date (colecții de date) specializate ce ocupă spații de memorie învecinate și în care aranjarea lor este interdependentă. Necesitate Exemple Memorarea și prelucrarea mediilor de absolvire pentru totalitatea elevilor unui liceu ! Memorarea și identificarea numerelor de înmatriculare ale autovehiculelor dintr-un județ Evidența biletelor eliberate (vândute) către clienți cu ocazia unui spectacol de anvergură (de exemplul pe un stadion)
Tablouriunidimensionale Structură de date căreia i se atribuie un nume. Este formată dintr-o colecție de elemente de același tip, dispuse contiguu într-un bloc de memorie. Elementele pot fi accesate individual prin indici sau ca un tot unitar. Toate elementele au un predecesor (excepție primul) și un succesor (excepție ultimul) Definiție Declarare Tip_de_bază nume_tablou [dimensiune_max] ! Tip_de_bază - precizează tipul datelor (întregi, caracter, etc.) Nume tablou – identificator, precizează numele dat tabloului Dimensiune max – numărul maxim de componente (o constantă întreagă) Dimensiune max = memoria fizică alocată. Dimens. logică ≤dimens.max
Tablouriunidimensionale Declararea tablourilor int vec [3]; vectorul (poate) conține 3 elementede tip int const int max=99;int vec[max]; vectorul (poate) conține 99 elem. float vec [99]; vectorul (poate) conține 99 elem de tip float char vec [3] ; vectorul (poate) conține 3 elemente de tip char int sir[3*3+2] ; vectorul “sir”(poate) conține 11 elemente de tip char inta[99], b[99] ; au fost declarați doi vectori a, b
Tablouriunidimensionale Exemple incorecte de declarare pentru că : integer vec [99] ; tipul integer nu e definit in C++ float vec [max] ; “max” este declarat ca variabilă char vec 1 [3*9] ; în nume există caracterul “spațiu” int char[99] ; s-a folosit ca nume cuvântul rezervat “char”
Tablouriunidimensionale Inițializarea tablourilor int vec [3]; vectorul (poate) conține 3 elementede tip int int vec [3] = {5, 6, 7}; vectorul conține elementele din acoladă float vec [] = {1.4, -2,1.2e+2}; conținutul este indicat în acoladă char vec [3] = {‘a’, ‘b’, ‘c’}; vectorul conține caracterele a, b ,c charsir[]={“vector”} ; vectorul “sir” conține 6 elemente de tip char charsir[3]={char(97), char(98)} ; vectorul conține caracterele a, b
Tablouriunidimensionale Accesul la elementele tabloului : Se folosește numele tabloului urmat de indicele (numărul de ordine) elementului referit, înscris între paranteze pătrate. Ex. nume[indice] int vec [4] = {12, 23, 34, 45}; V[0] V[1] V[2] V[3] Referirea la elemente Primul element din vector are numărul de ordine (indicele) zero ! Astfel, elementul cu număr de ordine 0 din vector este 12, elementul al 2-lea este 23 și elementul 45 este al 4-lea element din vector (are indicele 3).
Tablouriunidimensionale Operații posibile Inițializarea (generarea) tabloului unidimensional Memorareași afișarea elementelor unui tablou Parcurgerea și căutarea elementelor memorate în tablou Prelucrarea elementelor tabloului (sume, medii , căutări, maxime, verificări) Căutarea unei valori in tablou Sortarea elementelor unui tablou Interclasarea (concatenarea) a doi vectori sortați anterior
Tablouriunidimensionale #include<iostream> using namespace std; main() { const intmax=99; intvec[max], i, n; do { cout<<"\nNr. elemente = "; cin>>n; } while (n>99); for ( i=0;i<n;i++) vec[i]=i; //afisareaelementelorvectoruluipelinie for ( i=0;i<n;i++) cout<< vec[i]<<endl; system(“pause”); } Generarea tabloului • Vectorul a fost declarat ca având lungimea “max”. • “max” a fost declarat ca o constantă având valoarea 99 • Numărul de elemente “n” al vectorului se citește repetat în instrucțiunea do – while atâta timp cât valoarea citită este mai mare ca 99 • În repetiția for, i se atribuie fiecărui element al vectorului valoarea i, astfel încât vectorul va avea forma : • 1, 2 ,3 ,4 , ...n
Tablouriunidimensionale #include<iostream> using namespace std; main() { intvec[99], i, n; do { cout<<"\nNr. elemente = "; cin>>n; } while (n>99); for ( i=0;i<n;i++) { cout<<"\nElementul = "; cin>>vec[i]; } cout<<"\nVectoruleste : "; for (i=0; i<n; i++) cout<<vec[i]<<" "; system(“pause”);} Crearea și afisarea tabloului • Numărul “n” de elemente al vectoruluise citește de la tastaturăîn mod repetat atâta timp cât numărul citit este mai mare ca 99 • În repetiția for, se citește de la tastatură valoarea fiecărui element al vectorului (citirea se face simultan cu memorarea în vector) • Afișarea se face în interiorul structurii repetitive “for”, între elementele vectorului fiind un spațiu liber (cout<<vec[i]<<" “;)
Tablouriunidimensionale #include<iostream> using namespace std; main() { intvec[99], i, n, sum=0; do { cout<<"\nNr. elemente = "; cin>>n; } while (n>99); for ( i=0;i<n;i++) { cout<<"\nElementul = "; cin>>vec[i]; sum+=vec[i]; } cout<<"\nSumaelementelor = " <<sum; system(“pause”);} Sume în tablou • Variabila“sum” este inițializată cu 0 • În repetiția do-while, se citește numărul de elemente “n” până când acesea este mai mic ca 99 • Simultan cu citirea elementelor vectorului (în repetiția “for”) suma se incrementează cu valoarea elementului de vector citit adică altfel scris : suma = suma + vec[i] • La terminarea repetiției, suma elementelor citite este afișată
Tablouriunidimensionale #include<iostream> using namespace std; main() { intvec[99], i, n, par=0; do { cout<<"\nNr. elemente = "; cin>>n; } while (n>99); for ( i=0;i<n;i++) { cout<<"\nElementul = "; cin>>vec[i]; } for (i=0;i<n;i++) if (vec[i]%2 == 0) par++; cout<<"\nElem. pare = "<<par; cout<<"Elem. impare = "<<n-par; system(“pause”);} Numărarea unor elemente • Variabila“par” este inițializată cu 0. Ea va număra câte elemente sunt pare • În repetiția do-while, se citește numărul de elemente “n” până când acesta este mai mic ca 99 • După memorarea elementelor, parcurgem vectorul (cu repetiția“for”)și comparăm pentru fiecare element dacă restul împărțirii lui la 2 este 0. (vec[i] % 2 == 0). • Dacă da, (restul = 0) atunci înseamnă că elementul este par și contorul “par” crește cu o unitate. • Număr impare = total – par
Tablouriunidimensionale #include<iostream> using namespace std; main() { intvec[99], i, n, max, min; do { cout<<"\nNr. elemente = "; cin>>n; } while (n>99); for (i=0;i<n;i++) { cout<<"\nElementul = "; cin>>vec[i]; } max = min = vec[0]; for (i=1;i<n;i++) { if (vec[i]>max) max = vec[i]; if (vec[i]<min) min = vec[i]; } cout<<"\nElement max = "<<max; cout<<"\nElement min = "<<min; system(“pause”);} Determinare min, max • Variabilele “min” și “max” suntinițializate cu valoarea primului element de vector “vec[0]”. • După memorarea elementelor, parcurgem vectorul (cu repetiția“for”) • Comparăm pentru fiecare element dacăestemaimic ca “min”. Dacă da, atunciacestadevine “min” min=vec[i]) • Comparăm și dacă este mai mare ca “max”. Dacă dacă da, acestuiai se atribuievaloarealui “max” (max=vec[i]). • La terminareaparcurgerii, valorile “min” și “max” suntafișate