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

Post on 09-Jan-2020

2 views 0 download

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