Sunteți pe pagina 1din 12

Tablouri unidimensionale.

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.

Declaratia unui vector se realizeaza prin specificarea tipului componentelor vectorului,


identificatorul vectorului urmat apoi de dimensiunea acestuia intre paranteze drepte:

int a[5]; - declara un sir (vector) de 5 de numere intregi


float f[10]; - declara un sir(vector) de 10 numere reale
char c[20]; - declara un sir (vector) de 20 caractere alfanumerice

Observatie: Primul element al vectorului are coordonata 0 (a[0]), al doilea are coordonata
1 (a[1]), s.a.m.d.:

int a[5];

Introducerea/afisarea componentelor unui vector sunt de regula operatii realizate cu ajutorul


structurilor repetitive, in principal folosindu-se structura FOR:

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. Sa se introduca un sir de n numere intr-un vector. Sa se afiseze pe ecran cele n


numere despartite printr-un spatiu.
2. Sa se calculeze suma primelor n numere oarecare.
3. Se citesc n numere naturale. Care este suma elementelor aflate pe pozitii impare in
vector? Dar a celor aflate pe pozitii pare ?
4. Se da un sir de n numere naturale. Sa se determine cate dintre acestea sunt divizibile
cu un numar - div - introdus de la tastatura.
5. Sa se introduca n numere de la tastatura intr-un vector si sa se determine cate dintre
acestea apartin intervalului [a,b] si care sunt acestea.
6. Sa se determine numarul maxim, respectiv minim dintr-un sir de n numere naturale
introduse de la tastatura.
7. Se citesc numere pana la 0. Sa se calculeze suma celor negative si produsul celor
pozitive. Numarul 0 nu se ia in calcul.
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.
9. Se da un sir x cu n elemente intregi unde n este cuprins in intervalul [a,b], iar a si b
sunt introduse de la tastatura. Sa se calculeze:
a)suma elementelor pozitive;
b) produsul elementelor pare;
c) suma elementelor negative aflate pe pozitii impare
d) media aritmetica a elementelor care dau restul 2 la impartirea cu 5
e) sa sa numere cate elemente sunt mai mici ca 6
f) sa se verifice daca al p-lea element din sir este divizibil cu 4
10. Se da un numar format din n cifre. Sa se afiseze cifrele componente ale acestuia in
ordinea in care apar in numar.
Rezolvari

1. Sa se introduca un sir de n numere intr-un vector. Sa se afiseze pe ecran cele n numere


despartite printr-un spatiu.

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 }

2. Sa se calculeze suma primelor n numere oarecare.

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 }

4. Se da un sir de n numere naturale. Sa se determine cate dintre acestea sunt divizibile cu un


numar - div - introdus de la tastatura.

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 }

5. Sa se introduca n numere de la tastatura intr-un vector si sa se determine cate dintre


acestea apartin intervalului [a,b] si care sunt acestea.

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;
}

6. Sa se determine numarul maxim, respectiv minim dintr-un sir de n numere naturale


introduse de la tastatura.

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 }

9. Se da un sir x cu n elemente intregi. Sa se calculeze:


a) suma elementelor pozitive;
b) produsul elementelor pare;
c) suma elementelor negative aflate pe pozitii impare
d) media aritmetica a elementelor care dau restul 2 la impartirea cu 5
e) sa sa numere cate elemente sunt mai mici ca 6
f) sa se verifice daca al p-lea element din sir este divizibil cu 4

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 }

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