Sunteți pe pagina 1din 7

VECTORI(SIRURI)

Definitie : Vectorii sau sirurile sunt acele variabile care stocheaza orice
tip de date pe un timp nelimitat cat timp programul ruleaza(dupa
apasarea F9 si compilarea programului).

Sintaxa/Declarare : tip_data nume_vec[dimensiune];

tip_data = tipul de date ce vor fi stocate in


vector(int = intregi, float = reale, char = caractere, long = intregi cu 4+
cifre, string = propozitii, unsigned int/long/long long = intregi positive,
intregi cu 4+ pozitive/intregi cu 8+ pozitive).

nume_vec = numele pe care-l va lua vectorul,


respective numele cu care vei apela vectorul(a apela = a citi elementele
din vector).

dimensiune = lungimea fizica a vectorului


(numarul de elemente pe care le va avea vectorul)

Vectorii pot fi : predefiniti(li se da initial un sir de valori care sunt


ulterior prelucrate. !Nu necisita citirea suplimentara de valori)

Nedifiniti(asa le spun eu deoarece se defines prin


citire, atat din punct de vedere al lungimii cat si din punct de vedere al
elementelor).

Exemple de vectori predefiniti:

int b[4] = {1,2,3,4}; ///am definit un vector cu numele b, cu 4 elemente


de tip de intreg.

float c[5] = {1.0,1.1,1.2,1.3,1.4} ///am definit un vector cu numele c, cu


5 elemente de tip real.
char a[2] = {a,b} ///am definit un vector cu numele a, cu 2 elemente de
tip character.

Exemple de vectori nedefiniti:

int a[5];

float b[3];

char d[10];

Vectorii nedefiniti sunt ulterior cititi fie din consola, fie din fisier.

Citirea din consola :

Pentru o eficienta completa din punct de vedere al stocarii(un


vector, in functie de cate spatii I se aloca [spatii], cu atat ocupa mai
mult spatiu in memoria calculatorului, caci stocheaza date permanent),
se citeste numarul n, in cazul in care se specifica asta, reprezentand
numarul de elemente, apoi se declara vectorul cu cele n elemente.

#include <iostream.h>

using namespace std;

void main(){

int n; cin>>n;

int v[n];///am declarat vectorul cu numele v cu cele n elemente.

int x;///cu aceasta variabila se vor citii cele n numere de pus in vector;

for(int i=0;i<n;i++)///aceasta instructiunea urmareste parcurgerea


spatiilor din vector pentru umplerea lor cu valorile citite in x;

cin>>x///se citeste valoarea x;


v[i]=x;///spatiului cu numarul “i” din vector I se atribuie variabila citita
x;

///acum pentru a afisa elementele vectorului citit, se foloseste aceiasi


instructiune for, doar ca se utilizeaza cout<< pentru a afisa.

for(int i=0;i<n;i++){

cout<<v[i]<<” “;

///”apelarea” unui element din vector se face la nivel de for prin


“nume_vector[locul_valorii]”;

return 0;

Programul de mai sus demonstreaza faptul ca in vector se retin date


permanente in vector. La fel se pot rezolva exercitii, dar care cer
altceva, totul rezumandu-se, in general, la al 2-lea for.

P1:

Se citeste un numar n, iar apoi n numere naturale, acestea


reprezentand cele n elemente ale vectorului “v”. Se cere sa se calculeze
si sa se afiseze suma elementelor citite.

*Indicatie : Se determina elementele vectorului, apoi in al doilea for se


aduna intr-o variabila, care ulterior este afisata pentru a indeplini
cerinta.

*Observatii :
1. Nu intotdeauna rezolvarea unei probleme cu vectori este cea mai
eficienta, rezolvarea rezumandu-se la cerinta autorului.

2. Elementele unui vector nu se pot prelucra in while(Exemplu :


while(v[i] != 0){…}). Elementul se pune intr-o variabila si se prelucreaza.

3. Elementele unui vector incep numararea de la 0 astfel :

10 11 29 72 53 94 -100 92 7
790
0 1 2 3 4 5 6 7 8

Am reprezentat un vector cu 9 elemente, casutele de jos reprezentand


spatiile. Elementele de sus sunt elementele vectorului. Calculatorul
incepe numerotarea spatiilor de la 0, nu de la 1 si de aceea
instructiunea for porneste de la 0 si merge pana la strict < decat
lungimea de care are nevoie. In acest caz n era 9, atunci forul venea asa
: for(int i=0;i<9;i++){…}.

Citirea din fisier se face astfel :

ifstream f(„nume.txt”);

int main(){

int n;

f>>n;

int v[n],x;///am delcarat vectorul v cu n elemente si variabila de tip


intreg x cu care vom citi valorile.

for(int i=0;i<n;i++){

f>>x;

v[i]=x;
}///acum elementele din fisier sunt in vector.

*Atentie:Citirea de mai sus este valabila in cazul in care ni se specifica in


cerinta ca de pe prima linie a fisierului „x.txt” se citeste un numar n, iar
apoi n numere naturale. In cazul in care apare exprimarea „se citesc
numerele din fisierul „x.txt” ele reprezentand elementele vectorului v”
sau ceva similiar, se va face astfel:

ifstream f(„nume.txt”);

int main(){

int x,i=0;///instructiunea for va deveni o citire succesiva de valori, unde i


reprezinta pozitia elementului.

Int v[100];///in cazul exprimarii aceleia ^, se va specifiac valoarea


maxima a lui v.

while(f>>x){

v[i]=x;

i++;///i creste succesiv}

int lungime=i;///lungimea vectorului se declara in alta variabila sau se


va face citirea din for cu alt contor.

for(int i=0;i<lungime;i++){…}

///citirea cu alt contor:

///for(int j=0;j<i;j++){…}

P2:Se citeste din fisierul „date.in” de pe prima linie a fisierului un numar


n, apoi n numerele naturale reprezentand elementele sirului v. Sa se
afiseze in fisierul de iesire „date.out”, cu un spatiu intre ele, sumele
cifrelor elementelor citite.

P3:Se citesc succesiv din fisierul „date.in” mai multe numere naturale.
Sa se afiseze media lor aritmetica in consola(*indicatie:se foloseste
„cout<<” si se declara doar ifstream-ul).

SORTAREA UNUI VECTOR


Sortare clasica:

void sortare(int v[], int dimensiune){

for(int i=0;i<dimensiune-1;i++){

for(int j=i++;j<dimensiune;j++){

if(v[i]>v[j]){

int aux=v[i];
v[i]=v[j];

v[j]=aux;

Am scris-o intr-o functie separata sortarea, dar pentru ca nu sunt in


programa de a 9a si pt ca eu le-am invatat separat, tu in algoritmul
normal pui totul dupa void sortare(…). !Nu uita sa scoti prima acolada
de la void si ultima acolada de jos.
*Observatie:Evident, dimensiune in anumite cazuri = n/lungime/i; iar
aici am utilizat vectorul v, care poate avea alta denumire in functie de
problema.

P4:Se citesc de la tastatura : un numar natural n si apoi n elemente,


reprezentand elementele vectorului v. Se cere afisarea sortata a
elementelor vectorului v.

**Sper ca te-am ajutat, daca mai ai intrebari imi spui pe wapp, iar
problemele, sunt optionale, dar ti le-am dat ca sa vezi daca ai inteles
cum se rezolva pe aspect general problemele de fiecare tip care poate
sa apara… Mi le trimiti rezolvate pe wapp, daca le face.

Spor !

S-ar putea să vă placă și