Teorie

                             Vectori (tablouri unidimensionale)

    Uneori este necesara prelucrarea unui set de valori de acelasi tip,asezate intr-o anumita ordine.O astfel de structura se numeste sir,iar valorile respective se numesc elementele sirului.
    Limbajul C++ ofera posibilitatea de a memora toate elementele sirului intr-o singura variabila indexata,in care elementele sunt dispuse intr-o anumita ordine,ocupand locatii de memorie succesive,binedeterminate.O astfel de variabila se numeste tablou unidimensional sau vector.
    Pentru a referi un anumit element al vectorului,trebuie sa scriem numele variabilei-vector,urmat de pozitia elementului cuprinsa intre paranteze.

     Declararea vectorului
    Un vector trebuie declarat,la fel ca orice variabila,in sectiunea de declaratii a programului.In declaratia unui vector trebuie sa apara:identificatorul vectorului si tipul elementelor.

           exemplu: int v[30];
     Am declarat un vector v cu maxim 30 de elemente numere intregi;
          -numele variabilei-vector este v;
          -tipul elementelor vectorului este int,adica elementele sunt numere intregi;
          -elementele vectorului sunt v[0],v[1],.....v[29] ,avand indicii 0,1,2,.....,29.

       Citirea vectorului
    Deoarece v este o variabila compusa,nu putem citi dintr-o data toate elementele vectorului.
    Vom citi mai intai numarul real de elemente n.
         cout<<"n=";
         cin>>n;
         for(i=1;i<=n;i++)
         {
          cout<<"v["<<i<<"]=";
          cin>>v[i];
          }


      Afisarea unui vector
      Folosind aceeasi metoda de parcurgere a vectorului,vom parcurge pozitiile elementelor din vector i=1,2...,n si pentru fiecare valoare a lui i,afisam elementul de pe pozitia i,adica v[i].
      for(i=1;i<=n;i++)
        cout<<v[i]<<" ";

       Determinarea minimului dintr-un sir de numere
        Fiind dat un sir de n numere intregi memorat intr-un vector,se pune problema determinarii elementului cel mai mic.
        Memoram minimul intr-o variabila min.Presupunem initial ca minimul este primul element,intr-un ciclu,contorul i parcurge pozitiile elementelor i=1,2...n.Pentru fiecare valoare a lui i,comparam elementul v[i] cu minimul pe care il avem in acel moment in variabila min.Daca v[i] este mai mic decat minimul min,atunci elementul respectiv v[i] devine noul minim {min=v[i];}.
          min=v[i];
          for(i=1;i<=n;i++)
            if(v[i]<min)
              min=v[i];


       Sortarea prin interschimbare directa
       Fiecare din elementele v[1],....,v[n-1] va juca pe rand rolul unui asa-numit pivot.Parcurgem pivotii intr-un ciclu in care contorul i ia pe rand valorile 1,2,....,n-1 si la fiecare pas al ciclului comparam pivotul v[i] cu toate elementele aflate dupa el,v[i+1],....,v[n-1].Parcurgem pozitiile acestor elemente intr-un ciclu cu contorul j=i+1,...,n si pentru fiecare element v[j],daca este mai mic decat pivotul v[i],atunci v[j] trebuie sa fie inaintea lui v[i].

      Interschimbarea lui v[i] cu v[j] se face prin metoda paharelor:salvam mai intai v[i] intr-o variabila aux{aux=v[i];},apoi aducem in v[i] valoarea lui v[j] {v[i]=v[j];} si in sfarsit,memoram in v[j] valoarea initiala a lui v[i] luata din aux {v[j]=aux;}.

        for(i=1;i<=n-1;i++)
            for(j=i+1;j<=n;j++)
              if(v[j]<v[i])
              {aux=v[i];
                v[i]=v[j];
                v[j]=aux;
                }


   Exemplu de program:
    Dintr-un fisier se citesc n numere intregi.Sa se aranjeze vectorul astfel incat in prima parte a lui sa avem valori negative si in a doua parte valori pozitive.
     #include<iostream.h>
     int main()
     {int n,v[20],i,j,aux;
     cout<<"n=";cin>>n;
     for(i=1;i<=n;i++)
       {cout<<"v["<<i<<"]=";
        cin>>v[i];
        }
       for(i=1;i<=n;i++)
       cout<<v[i]<<" ";
       for(i=1;i<=n-1;i++)
         for(j=i+1;j<=n;j++)
           if(v[i]>0 && v[j]<0)
                 {aux=v[i];
                   v[i]=v[j];
                   v[j]=aux;
                   }
        for(i=1;i<=n;i++)
        cout<<v[i]<<" ";
        return 0;}