Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi...

26
1 Vectorii sunt de fapt niste spatii in memorie, in care putem memora anumite valori (de acelasi tip), citite de la tastatura.

Transcript of Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi...

Page 1: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

1

Vectorii sunt de fapt niste spatii in memorie, in care putem memora anumite valori (de acelasi tip), citite de la tastatura.

Page 2: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

2

Page 3: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

3

Page 4: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

4

Page 5: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

5

Page 6: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

6

Page 7: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

7

Page 8: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

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).

Page 9: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

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

Page 10: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

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

Page 11: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

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

Page 12: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

12

Numararea elementelor pare:

Page 13: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

13

Determinare minim si maxim:

Page 14: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

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

Page 15: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

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

Page 16: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

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.

Page 17: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

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

Page 18: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

18

Page 19: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

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; }

Page 20: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

20

Page 21: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

21

Adaugare element la capat:

Page 22: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

22

Adaugare element in pozitia k:

Page 23: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

23

Stergere element din pozitia K;

Page 24: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

24

Probleme rezolvate cu vectori

Sa se scrie un program care afiseaza elementul minim par al unui sir.

Page 25: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

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

Page 26: Vectorii sunt de fapt niste spatii in memorie, in care …9 Citirea valorilor in vector: - vom citi de la tastatura o variabila n, care reprezinta numarul efectiv de spatii dorite

26

Nr1: Nr: 2