Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi...
Transcript of Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi...
1
Vectorii sunt de fapt niste spatii in memorie, in care putem memora anumite valori (de acelasi tip), citite de la tastatura.
2
3
4
5
6
7
8
Iata vectorul cu 10 spatii, in care s-au memorat niste valori .
Acest vector are de exemplu: v[0]=5,
v[1] = 11, v[2]=2 …….. s.a.m.d.
De fapt, vectorii sunt asemanatori unei functii, cu legea de corespondenta
definita de utilizator pentru fiecare valoare a lui f: f(0)=5, f(1)=11, etc. In C++, vectorii se declara astfel:
tip nume_vector [valoarea maxima de spatii in memorie];
Exemplu de declarare vector:
int vector [25]; // am declarat un vector cu maxim 25 de spatii in memorie, de tip intreg (int).
9
Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite de
utilizator. - urmeaza citirea fiecarei valori ale fiecarui spatiu, adica acei v[i]. (Pentru asta, vom avea nevoie de o variabila i, intr-un FOR care sa memoreze numarul spatiului, ce va porni
evident de la 0 sau 1.pana la n)
(Nota! Vectorul poate avea si max. 100 de spatii libere, dar utilizatorul nu poate introduce un n > 100,
deoarece citirea se va opri!).
Generarea tabloului: (afiseaza un sir de numere de la 1 pana la n) #include<iostream > using namespaces std; int main() { int v[50], i, n; declara variabile cout<<”n= ”; cin >>n; citeste valoarea lui n for ( i=1; i<=n; i++) pentru toate valorile contorului i de la 1 la n v [i ]=i; pe pozitia i din vector i-a valoarea lui i for ( i=1; i<=n; i++) pentru toate valorile contorului i de la 1 la n
10
cout<<v[i]<<” ”; se afiseaza valorile vectorului cu spatii intre ele }
Crearea si afisarea tabloului:
#include<iostream >
using namespaces std; int main() {
int v[50], i, n; declara variabile cout<<"\n Nr. elemente = "; se afiseaza mesajul dintre ghilimele cin>>n; memoreaza (citeste) valoarea retinuta pentru variabila n
for ( i=1; i<=n; i++) pentru toate valorile contorului i de la 1 la n { cout<<“v [ “<<i<<“ ]=“; afiseaza componenta vectorului de pe pozitia i cin>>v[i]; memoreaza (citeste) valoarea retinuta pentru variabila v[i] }
for ( i=1; i<=n; i++) pentru toate valorile contorului i de la 1 la n cout<<v[i]<<“ ”; afiseaza valorile retinute pentru vector }
Afiseaza vectorul
11
Sume in tablou:
#include<iostream > using namespace std; int main() { int v[50], i, n, sum=0; cout<<"\n Nr. elemente = "; cin>>n; for ( i=1;i<=n;i++) { cout<<"\n Elementul v["<<i<<"]="; cin>>v[i]; sum=sum+v[i]; } cout<<"\n Suma elementelor = "<<sum; }
Parcurge vectorul pentru a
calcula suma
12
Numararea elementelor pare:
13
Determinare minim si maxim:
14
Tablouri unidimensionale
RETINEM!
Ce este un vector? Este o structura de date formata dintr-o colectie de elemente de acelasi tip .
V
Ce caracteristici au
vectorii?
1. Ocupa un spatiu compact de memorie:
2. I se atribuie un nume acestei structuri
3. elementele pot fi accesate individual prin indici
4. toate elementele au un predecesor (cu exceptia primului )si un successor (cu exceptia
ultimului)
Cum se declara un vector? Tip_data nume_vector [ nr_maxim_de_locatii ]
Ex: int clasa_10 [ 30 ];
Cum accesam un element
din vector?
Parcurgem vectorul pentru contorul i=1,n
Nume_vector[i]
Care sunt operatiile
posibile de prelucrare?
Memorarea si afisarea elementelor
15
Sortarea crescatoare/ descrescatoare:
Avem un şir de 5 elevi, de diferite înălţimi, şi ne propunem să îi aşezăm în ordine crescătoare a
înălţimilor:
O persoană îi va aşeza cu uşurinţă în ordinea crescătoare dorită, privindu-i pe toţi şi făcând câteva comparaţii
ale înălţimilor lor.
Sortarea crescatoare/descrescatoare a elementelor
Prelucrarea elementelor(sume, medii, maxim/minim,pare/ impare, prime)
Parcurgerea si cautarea unor elemente
Stergerea sau adaugarea unui element
V[1]=175 V[2]=178 V[3]=153 V[4]=182 V[5]=174
V[1]=153 V[2]=174 V[3]=175 V[4]=178 V[5]=182
16
Dar daca numarul elevilor este un milion?
De aceea va trebui să aplice o tehnică generală care necesită
compararea elevilor întrei ei, doi câte doi.
O metodă ar fi următoarea:
1. Se ia cel mai scund dintre elevi şi se aşează deoparte;
2. Se procedează la fel cu restul elevilor; se ia din nou cel mai scund
şi se aşează alături de primul scos din rând, şi tot aşa.
Această metodă soluţionează problema, dar implică o serie de alte subprobleme (alegerea celui mai scund
dintre elevi, din rândul celor rămaşi ).
Problema determinării minimului
Pas1: Se consideră primul elev din rând ca fiind, până la proba contrarie, cel mai scund elev.
Pas2: Se parcurge rândul de elevi şi, dacă, se întâlneşte un elev mai scund, se renunţă la primul,
declarând noul elev drept cel mai scund; se procedează la fel în continuare.
17
Algoritmul în pseudocod:
Algoritm Explicatii
start
int n, v[30], i, j, aux;
P1: declararea datelor de intrare si iesire
citeste n; pentru i=1,n citeste v[i];
P2: Citirea vectorului
1. Citirea(memorarea lui n)
2. parcurgerea vectorului cu i de la 1 pana la n
3. Memorarea componentelor vectorului
pentru i=1,n-1 pentru j=i+1, n if (a[j]<a[i])
aux=a[i]; a[i]=a[j]; a[j]=aux;
P3: Ordonarea crescatoare
1. Parcurge vectorul cu i pana la penultima pozitie
2. Parcurge j de la i pana la ultima pozitie
3. Testeaza daca o valoare este mai mica
Daca DA se produce interschimbarea
pentru i=1,n scrie v[i];
sfarsit
P4: Afisarea vectorului ordonat
1. parcurgerea vectorului cu i de la 1 pana la n
2. afiseaza valoarea din pozitia i
18
19
//urmeaza afisarea sirului sortat cout<<"Sirul sortat crescator este:"<<endl; for(i=1;i<=n;i++) cout<<a[i]<<" ";
}
Parcurgerea matricei de variatie :
n i j a[1] a[2] a[3] a[4] a[5] aux
5 1 2 175 178 153 182 174
3 153 175 175
4
5
2 3 175 178 178
4
5 174 175 175
3 4
5 175 178 178
4 5 178 182 182
153 174 175 178 182
testam if (a[ i ]>a[ j ]) (A) se produce { aux=a[i]; a[i]=a[j]; a[j]=aux; }
20
21
Adaugare element la capat:
22
Adaugare element in pozitia k:
23
Stergere element din pozitia K;
24
Probleme rezolvate cu vectori
Sa se scrie un program care afiseaza elementul minim par al unui sir.
25
Se citeşte un vector cu n componente numere întregi. Să se afişeze doar numerele impare
aflate pe poziţii pare din vector
26
Nr1: Nr: 2