Vectori PDF
Vectori PDF
Clasa a V-a
Exemplu:
Acest vector are numele v si are n elemente, numere intregi.
Indicii elementelor sunt 0, 1, 2,……..n-1. Indicii elementelor sunt 1, 2,……..n-1, n.
Declararea unui tablou unidimensional se face prin instructiunea:
Tip_data nume [nr_elemente ];
tip_data precizează tipul elementelor vectorului,
nume este identificatorul vectorului,
nr_elemente , n este o constantă întreagă care specifică numărul de elemente ale vectorului.
De exemplu, prin: int a[10]; se declară un vector cu 10 de elemente de tip întreg.
La declararea unui vector se pot atribui valori iniţiale elementelor sale astfel:
Tip_data nume[ nr_elemente ] = { lista_valori };
Exemplu: int a[5]={10, 20, 2, 4, 9 };
În cazul declarării unui vector iniţializat se poate omite numărul elementelor sale, dacă se iniţializează toate elementele.
1
Lecţia 7 Tablouri unidimensionale in C++. Vectori de frecventa.
Clasa a V-a
VECTORI – APLICAŢII
Maximul dintr-un vector
Din fisierul de intrare [Link] se citeste de pe prima linie un numar natural n, reprezentand numarul de elemente
ale unui vector, iar de pe linia urmatoare se citesc n elemente, numere intregi, separate printr-un spatiu,
reprezentand elementele vectorului. Se cere să se afișeze valoarea maximă din acest vector in fisierul de iesire
[Link]. #include <fstream>
ifstream fin("[Link]"); ofstream fout("[Link]");
int v[101],n;
int main()
{ int i, vmax;
fin>>n;
for ( i = 1; i <= n; i++ )
fin>>v[i];
vmax = v[1];
Prelucrări elementare
1. Min/Max
int a[101], n, i;
min=max=a[1];
for (i=2; i<=n; i++)
{ if(min>a[i])min=a[i];
if(max<a[i])max=a[i];
aux=a[1];
for(i=1;i<=n-1;i++)
a[i]=a[i+1];
a[n]=aux;
aux=a[n];
for(i=n;i>1;i--)
a[i]=a[i-1];
a[1]=aux;
for(i=n+1;i>k;i--)
a[i]=a[i-1];
a[k]=x;
n++;
for(i=k;i<=n-1;i++)
a[i]=a[i+1];
n--;
Probleme propuse
3
Lecţia 7 Tablouri unidimensionale in C++. Vectori de frecventa.
Clasa a V-a
Cifre distincte
Fiind dat un număr natural n între 1 şi 2.000.000 să se afişeze cifrele numarului şi numărul de aparitii ale fiecarei cifre in numar.
Date de intrare
Fişierul de intrare [Link] conţine numărul n.
Date de ieşire
Fişierul de ieşire [Link] va conţine pe fiecare linie cifra si numarul de aparitii a acesteia in numar, separate printr-un spatiu.
Restricţii 1 ≤ n ≤ [Link]
Exemplu
[Link] [Link] Explicatii
2342342444 23 Numărul 2342342444 conţine 3 cifre distincte, 2, 3 si 4 .
32 Cifra 2 apare in numar de 3 ori, cifra 3 de 2 ori si cifra 4 de 5 ori.
45
Vectorul de frecvenţă pentru cifrele unui număr se declară sub forma unui vector cu 10 componente, de la fr[0],…,fr[9].
Acestea vor fi iniţializate cu 0, iar după citirea numărului n se va incrementa cu 1 numărul apariţiilor pentru fiecare cifră a lui n.
Vectorul de frecvenţe nu permite refacerea numărului citit iniţial, dacă este necesară valoarea acestuia
trebuie memorată separat.
#include<fstream>
using namespace std;
ifstream fin("[Link]");
ofstream fout("[Link]");
int fr[10],n,cn,c;
int main()
{ fin>>n;
cn=n; //copia lui n
while(cn>0)
{ c=cn%10;
fr[c]++; //construim vectorul frecventelor
cn=cn/10;}
for(c=0;c<10;c++)
if (fr[c]!=0) //afisam cifrele distincte si numarul de aparitii
fout<<c<<' '<<fr[c]<<endl;
return 0; }
4
Lecţia 7 Tablouri unidimensionale in C++. Vectori de frecventa.
Clasa a V-a
Numere1
Se dau n numere naturale. Determinaţi cele mai mari două numere cu trei cifre care nu apar printre numerele date.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieșire
Programul va afișa pe ecran numerele a b, a < b reprezentând cele două numere determinate. Dacă nu se pot găsi
două astfel de numere, se va afişa mesajul NU EXISTA.
int f[1000],n,i,x,a,b;
int main()
{ cin>>n;
for(i=1; i<=n; i++)
{ cin>>x;
if(x>=99 and x<=999)
f[x]=1;
}
for(x=999; x>=100; x--)
if(f[x]==0)
if(b==0)
b=x;
else
{ a=x;
break;
}
if(a!=0 and b!=0)
cout<<a<<' '<<b;
else
cout<<"NU EXISTA";
}
Tema
[Link]/arhiva- problema: vistiernic, policefm, daruri.
2. [Link]- problema: maxnr, minnr, culori, minnrk, cifre1,
3. [Link]- problema: suma2, numarare3, numararePIE, numarare5, mincifre, numere1, nrlipsa, ciffrecv
Trimiteţi soluţiile pe adresa virgaliliana@[Link] sub forma unei arhive denumită cu numele vostru.
Creaţi arhiva urmând paşii:
1. Creaţi un folder cu numelevostru_tema7
2. Copiati una câte una sursele [Link] în acest folder şi redenumiţi-le cu numele problemei
3. Arhivaţi acest folder pastrand numele arhivei identic cu al folderului
4. Ataşaţi arhiva la email-ul pe care îl trimiteţi la adresa virgaliliana@[Link]
SUCCES!