Documente Academic
Documente Profesional
Documente Cultură
Vectori in C++
Un vector este un sir de mai multe valori care au acelsi tip de date, componentele
acestuia putand fi identificate prin numele vectorului urmat (intre paranteze drepte) de pozitia
acestora in cadrul vectorului.
Observatie: Primul element al vectorului are coordonata 0 (a[0]), al doilea are coordonata
1 (a[1]), s.a.m.d.:
int a[5];
1 #include <iostream>
2 using namespace std; Cate numere sunt in sir? n=5
3 int main() Introduceti numerele:
4 { a[0]=6
5 int i, n, a[10]; a[1]=2
6 cout<<"Cate numere sunt in sir? n="; a[2]=9
7 cin>>n; a[3]=3
8 cout<<"Introduceti numerele:"<<endl; a[4]=4
9 for (i=0;i<n;i++)
10 {
11 cout<<"a["<<i<<"]=";cin>>a[i];
12 }
13 }
Initializarea vectorilor se mai poate face de asemenea fara introducerea de la tastatura ci direct
din faza declaratiei, astfel:
#include <iostream>
1
using namespace std; Elementele sirului sunt
2
int main() urmatoarele:
3
{ a[0]=6
4
int i, n; a[1]=2
5
int a[5]={6,2,9,3,4}; a[2]=9
6
cout<<"Elementele sirului sunt a[3]=3
7
urmatoarele:"<<endl; a[4]=4
8
for (i=0;i<5;i++)
9
{
10
cout<<"a["<<i<<"]="<<a[i]<<endl;
11
}
12
}
Exemplu: Sa se calculeze suma elementelor unui sir de n numere naturale oarecare, introduse
de la tastatura.
1 #include <iostream>
2 using namespace std; Cate numere sunt in sir? n=3
3 int main() Introduceti numerele:
4 { a[0]=2
5 int i, n, a[10], suma; a[1]=3
6 cout<<"Cate numere sunt in sir? n="; a[2]=4
7 cin>>n; Suma celor 3 numere este: 9
8 suma=0;
9 cout<<"Introduceti numerele:"<<endl;
10 for (i=0;i<n;i++)
11 {
12 cout<<"a["<<i<<"]=";cin>>a[i];
13 suma=suma+a[i];
14 }
15 cout<<"Suma celor "<<n<<" numere este: "<<suma;
16 }
Probleme propuse:
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int i,n,a[50];
6 cout << "Introducenti valoarea lui n:";
7 cin>>n;
8 for (i=1;i<=n;i++)
9 {
10 cout<<"a["<<i<<"]=";
11 cin>>a[i];
12 }
13 for (i=1;i<=n;i++)
14 cout<<a[i]<<" ";
15 return 0;
16 }
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int i,n,s,a[50];
6 cout << "Introducenti valoarea lui n:";
7 cin>>n;
8 s=0;
9 for (i=1;i<=n;i++)
10 {
11 cout<<"a["<<i<<"]=";
12 cin>>a[i];
13 s=s+a[i];
14 }
15 cout<<"Suma celor "<<n<<" numere este:"<<s;
16 return 0;
17 }
3. Se citesc n numere naturale. Care este suma elementelor aflate pe pozitii impare in vector?
Dar a celor aflate pe pozitii pare ?
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int i,n,s1=0,s2=0,a[50];
6 cout << "Introducenti valoarea lui n:";
7 cin>>n;
8 for (i=1;i<=n;i++)
9 {
10 cout<<"a["<<i<<"]=";
11 cin>>a[i];
12 if (i%2!=0)
13 s1=s1+a[i];
14 else
15 s2=s2+a[i];
16 }
17 cout<<"Suma elementelor aflate pe pozitii impare este: s1= "<<s1<<endl;
18 cout<<"Suma elementelor aflate pe pozitii pare este: s2= "<<s2<<endl;
19 return 0;
20 }
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int i,n,nr=0,a[50],div;
6 cout << "Introducenti valoarea lui n:";
7 cin>>n;
8 cout << "Introducenti valoarea lui div:";
9 cin>>div;
10 for (i=1;i<=n;i++)
11 {
12 cout<<"a["<<i<<"]=";
13 cin>>a[i];
14 if (a[i]%div==0)
15 nr++;
16 }
17 cout<<"In sirul dat exista "<<nr<<" numere divizibile cu "<<div;
18 return 0;
19 }
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int i,n,j=0,a,b,v[50],w[50];
6 cout << "Cate elemente va avea sirul? n=";
7 cin>>n;
8 cout << "Introducenti valoarea lui a:";
9 cin>>a;
10 cout << "Introducenti valoarea lui b:";
11 cin>>b;
12 for (i=1;i<=n;i++)
13 {
14 cout<<"v["<<i<<"]=";
15 cin>>v[i];
16 if (v[i]>=a && v[i]<=b)
17 {
18 j++;
19 w[j]=v[i];
20 }
21 }
22 cout << "Sirul contine "<<j<<" numere in intervalul ["<<a<<","<<b<<"]"<<endl;
23 cout << "Numerele din sir continute in intervalul ["<<a<<","<<b<<"] sunt
24 urmatoarele: ";
25 for (i=1;i<=j;i++)
26 cout<<w[i]<<" ";
27 return 0;
}
1 #include <iostream>
2 #include <climits>
3 using namespace std;
4 int main()
5 {
6 int i,n,min=INT_MAX,max=INT_MIN,temp,v[50];
7 cout << "Cate elemente va avea sirul? n=";
8 cin>>n;
9 for (i=1;i<=n;i++)
10 {
11 cout<<"v["<<i<<"]=";
12 cin>>v[i];
13 if (v[i]>=max)
14 max=v[i];
15 if (v[i]<=min)
16 min=v[i];
17 }
18 cout << "Numarul maxim din sir este: "<<max<<endl;
19 cout << "Numarul minim din sir este: "<<min<<endl;
20 return 0;
21 }
7. Se citesc numere pana la 0. Sa se calculeze suma celor negative si produsul celor pozitive.
Numarul 0 nu se ia in calcul.
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int n,a[50],b[50],i=0,j=0,k,s=0,p=1;
6 cout<<"n=";
7 cin>>n;
8 while (n!=0)
9 {
10 if (n>0)
11 {
12 i++;
13 a[i]=n;
14 }
15 else
16 {
17 j++;
18 b[j]=n;
19 }
20 cout<<"n=";
21 cin>>n;
22 }
23 cout<<"Elementele negative sunt urmatoarele:"<<endl;
24 for (k=1;k<=j;k++)
25 {
26 cout<<b[k]<<" ";
27 s=s+b[k];
28 }
29 cout<<endl<<"Suma elementelor negative este: s="<<s<<endl;
30 cout<<"Elementele pozitive sunt urmatoarele:"<<endl;
31 for (k=1;k<=i;k++)
32 {
33 cout<<a[k]<<" ";
34 p=p*a[k];
35 }
36 cout<<endl<<"Produsul elementelor pozitive este: p="<<p<<endl;
37 }
8. Sa se afiseze elementele pare care se gasesc intr-un sir de numere naturale precum si
pozitia pe care se afla acestea in cadrul sirului.
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int n,a[50],i=0;
6 cout<<"Cate elemente are sirul? n=";
7 cin>>n;
8 for (i=1;i<=n;i++)
9 {
10 cout<<"a["<<i<<"]=";
11 cin>>a[i];
12 }
13 cout<<"Elementele pare, respectiv pozitia in sir sunt urmatoarele:"<<endl;
14 for (i=1;i<=n;i++)
15 if (a[i]%2==0)
16 cout<<"Elementele par: "<<a[i]<<" / pozitia: "<<i<<endl;
17 }
1 #include <iostream>
2 #include <stdlib.h>
3 using namespace std;
4 int n, p, x[50], a, b, suma;
5 int main()
6 {
7 n=0;
8 cout<<"Introduceti limita inferioara: a=";
9 cin>>a;
10 cout<<"Introduceti limita superioara: b=";
11 cin>>b;
12 do
13 {
14 system("CLS");
15 cout<<"Introduceti numarul de elemente ale sirului x: n= ";cin>>n;
16 } while ((n<a)||(n>b));
17 cout<<"Introduceti elementele sirului x:"<<endl;
18 for(int i=1;i<=n;i++)
19 {
20 cout<<"x["<<i<<"] = ";
21 cin>>x[i];
22 }
23 //Calculul sumei elementelor pozitive din sir
24 for(int i=1;i<=n;i++)
25 if (x[i]>0)
26 suma=suma+x[i];
27 if (suma==0)
28 cout <<"Nu exista elemente pozitive"<<endl;
29 else
30 cout<<"Suma elementelor pozitive este: "<<suma<<endl;
31
32 //Calculul produsul elementelor pare
33 int produs=1;
34 for(int i=1;i<=n;i++)
35 if (x[i]%2==0)
36 produs=produs*x[i];
37 if (produs == 1)
38 cout <<"Nu exista elemente pare"<<endl;
39 else
40 cout<<"Produsul elementelor pare este: "<<produs<<endl;
41
42 //calcul suma elementelor negative aflate pe pozitii impare
43
44 suma=0;
45 for(int i=1;i<=n;i++)
46 if ((x[i]<0)&&((i%2)!=0))
47 suma=suma+x[i];
48 if (suma==0)
49 cout <<"Nu exista elemente negative aflate pe pozitii impare"<<endl;
50 else
51 cout<<"Suma elementelor negative aflate pe pozitii impare este:
52 "<<suma<<endl;
53
54 //Calculul mediei aritmetice a elementelor care dau restul 2 la impartirea cu 5
55 float ma=0;
56 int nr_elemente=0;
57 int s=0;
58 for(int i=1;i<=n;i++)
59 if ((x[i]%5)==2)
60 {
61 s=s+x[i];
62 nr_elemente++;
63 }
64 ma=(float)s/nr_elemente;
65 if (ma==0)
66 cout<<"Nu exista elemente care dau restul 2 la impartirea cu 5"<<endl;
67 else
68 cout<<"Media aritm. a elementelor care dau rest 2 la impartirea cu 5 este:
69 "<<ma<<endl;
70
71 //Cate elemente sunt mai mici ca 6
72
73 nr_elemente=0;
74 for(int i=1;i<=n;i++)
75 if (x[i]<6)
76 nr_elemente++;
77 cout<<"Sirul contine "<<nr_elemente<<" numere mai mici ca 6"<<endl;
78
79 //Verificare daca al p-lea element din sir este divizibil cu 4
80 do
81 {
82 cout<<"Introduceti pozitia elemetului testat: p=";
83 cin>>p;
84 }
85 while (p<1 || p>n);
86 if (x[p]%4==0)
87 cout<<"Numarul "<<x[p]<<" este divizibil cu 4"<<endl;
88 else
cout<<"Numarul "<<x[p]<<" nu este divizibil cu 4"<<endl;
}
10. Se da un numar format din n cifre. Sa se afiseze cifrele componente ale acestuia in ordinea
in care apar in numar.
1 #include <iostream>
2 #include <math.h>
3 using namespace std;
4 int main()
5 {
6 int n,n1,x,x1,a[50],i=0;
7 float max;
8 cout<<"Cate cifre are numarul? n=";
9 cin>>n;
10 n1=n;//salvare a dimensiunii numarului
11 max=(float)pow(10,n)-1;
12 cout<<"max="<<max<<endl;
13 do
14 {
15 cout<<"Introduceti numarul: x=";
16 cin>>x;
17 }
18 while (x<0 || x>max);
19 x1=x;//salvare a numarului dat
20 while (x>0)
21 {
22 a[n]=n%10;
23 n--;
24 x=x/10;
25 }
26 for (i=1;i<=n1;i++)
27 cout<<"a["<<i<<"]="<<a[i]<<endl;
28 }