0% au considerat acest document util (0 voturi)
1K vizualizări13 pagini

Lab Vectori1

Documentul prezintă 10 probleme de programare rezolvate care implică vectori și proprietăți ale acestora, cum ar fi determinarea diferenței între numărul de valori pare și impare, afișarea elementelor multipli ai ultimului element, determinarea minimului și maximului etc.

Încărcat de

Cristian Sovaila
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
1K vizualizări13 pagini

Lab Vectori1

Documentul prezintă 10 probleme de programare rezolvate care implică vectori și proprietăți ale acestora, cum ar fi determinarea diferenței între numărul de valori pare și impare, afișarea elementelor multipli ai ultimului element, determinarea minimului și maximului etc.

Încărcat de

Cristian Sovaila
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

LABORATOR – VECTORI – PROPRIETĂȚI,PARCURGERE

Probleme rezolvate

1. Se dă un șir cu n elemente, numere naturale. Determinați diferența în valoare absolută


dintre numărul de valori pare din șir și numărul de valori impare din șir.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând
elementele șirului.
Date de ieșire
Programul va afișa pe ecran numărul C, reprezentând valoarea cerută.
Exemplu
Intrare
5
15 245 28 33 11
Ieșire
3
Explicație
Sunt 4 numere impare și un număr par în șir, deci diferența este 3.
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n,i,d,v[1000],k1,k2;
cin>>n;
k1=0;
k2=0;
for (i=1;i<=n;i++)
cin>>v[i];
for (i=1;i<=n;i++)
{
if (v[i]%2==0)
k1=k1+1;
else
k2=k2+1;
}
if (k1>=k2)
d=k1-k2;
else d=k2-k1;
cout<<d;
return 0;
}

2. Se citește un vector cu n elemente, numere naturale. Să se afișeze elementele din vector


care sunt multipli ai ultimului element.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând
elementele vectorului.
Date de ieşire
Programul afișează pe ecran elementele cerute, separate prin exact un spațiu, în ordinea din
vector.
Restricţii şi precizări
 1 ≤ n ≤ 1000
 elementele vectorului vor fi mai mici decât 1.000.000
 ultimul element al vectorului este nenul

Exemplu
Intrare
5
74962
Ieșire
462
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n,x,i,q,v[1000],a[1000];
cin>>n;
q=0;
for (i=1;i<=n;i++)
cin>>v[i];
x=v[n];
for (i=1;i<=n;i++)
if (v[i]%x==0)
{
q=q+1;
a[q]=v[i];
}
for (i=1;i<=q;i++)
cout<<a[i]<<" ";
return 0;
}

3. Se citește n, apoi încă n numere naturale, reprezentând elementele unui vector. Calculaţi


valoarea minimă minim și valoarea maximă maxim a valorilor elementelor vectorului.
Date de intrare
Programul citește de la tastatură de numărul n, apoi încă n numere naturale, reprezentând
elementele vectorului.
Date de ieşire
Programul va afișa pe ecran cele două numere minim şi maxim, separate printr-un singur
spaţiu.
Exemplu
Intrare
5
82945
Ieșire
29
Rezolvare
#include <iostream>
using namespace std;
int main()
{
int n,i,minim,maxim,v[1000];
cin>>n;
for (i=1;i<=n;i++)
cin>>v[i];
minim=v[1];
maxim=v[1];
for (i=1;i<=n;i++)
if (v[i]>maxim)
maxim=v[i];
else if (v[i]<minim)
minim=v[i];
cout<<minim<<" "<<maxim;
return 0;
}

4. Se citește un vector cu n elemente, numere naturale distincte. Să se afișeze elementele


cuprinse între elementul cu valoarea minimă și cel cu valoare maximă din vector, inclusiv
acestea.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând
elementele vectorului.
Date de ieşire
Programul afișează pe ecran elementele cerute, separate prin exact un spațiu.
Exemplu
Intrare
5
79628
Ieșire
962
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n,p,i,minim,maxim,k1,k2,v[1000];
cin>>n;
p=0;
for (i=1;i<=n;i++)
cin>>v[i];
if (n==1)
{
cout<<v[1];
p=1;
}
maxim=v[1];
minim=v[1];
for (i=1;i<=n;i++)
if (v[i]>maxim)
maxim=v[i];
else if (v[i]<minim)
minim=v[i];
for (i=1;i<=n;i++)
if (v[i]==maxim)
k1=i;
else if (v[i]==minim)
k2=i;
if (p==0) {
if (k1<k2)
for (i=k1;i<=k2;i++)
cout<<v[i]<<" ";
else if (k1>k2)
for (i=k2;i<=k1;i++)
cout<<v[i]<<" ";
}
return 0;
}

5. Se dă un vector cu n numere naturale. Să se determine câte dintre perechile de elemente


egal depărtate de capetele vectorului sunt prime între ele.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii,
reprezentând elementele vectorului.
Date de ieşire
Programul afișează pe ecran numărul C, reprezentând valoarea cerută.
Exemplu
Intrare
6
50 18 15 28 35 40
Ieșire
2
Explicație
Perechile de elemente prime între ele sunt: 18 35 și 15 28.
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n,i,a,b,nr,v[1000];
cin>>n;
nr=0;
for (i=1;i<=n;i++)
cin>>v[i];
for (i=1;i<=n/2;i++)
{
a=v[i];
b=v[n+1-i];
while (a!=b)
{
if (a>b)
a=a-b;
else b=b-a;
}
if (a==1)
nr=nr+1;
}
cout<<nr;
return 0;
}

6. Se dă un vector x cu n elemente, numere naturale. Să se construiască un alt vector, y,


care să conțină elementele prime din x, în ordine inversă.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii,
reprezentând elementele vectorului.
Date de ieşire
Programul afișează pe ecran elementele vectorului y, separate prin exact un spațiu.
Exemplu
Intrare
6
50 5 15 29 13 40
Ieșire
13 29 5
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n, i, x[201], y[201], nr = 0;
cin >> n;
for (i = 1; i <= n; i++)
cin >> x[i];
for (i = n; i >= 1; i--)
{
int prim = 1;
if (x[i] < 2)
prim = 0;
if (x[i] % 2 == 0 && x[i] > 2)
prim = 0;
for (int d = 3; d * d <= x[i] && prim == 1; d+=2)
if (x[i] % d == 0)
prim = 0;
if (prim == 1)
y[++nr] = x[i];
}
for (i = 1; i <= nr ;i++)
cout << y[i] << " ";
return 0;
}

7. Se dă un vector cu n numere naturale. Să se determine câte dintre perechile de elemente


din vector sunt formate din valori cu aceeași sumă a cifrelor.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii,
reprezentând elementele vectorului.
Date de ieşire
Programul afișează pe ecran numărul C, reprezentând valoarea cerută.
Exemplu
Intrare
6
51 842 15 28 77 132
Ieșire
4
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n,x,y,i,k,s,S,nr,v[1000];
cin>>n;
nr=0;
for (i=1;i<=n;i++)
cin>>v[i];
for (i=1;i<=n;i++)
for (k=i+1;k<=n;k++)
{
S=0;
s=0;
x=v[i];
y=v[k];
while (x!=0)
{
S=S+x%10;
x=x/10;
}
while (y!=0)
{
s=s+y%10;
y=y/10;
}
if (S==s)
nr=nr+1;
}
cout<<nr;
return 0;
}

8. Se dă un număr natural nenul k și vector cu n numere naturale. Să se înlocuiască fiecare


element cu multiplul lui k cel mai apropiat de el și să se afișeze elementele astfel obținute în
ordine inversă.
Date de intrare
Programul citește de la tastatură numerele k și n, iar apoi n numere naturale, separate prin
spaţii, reprezentând elementele vectorului.
Date de ieşire
Programul afișează pe ecran elementele vectorului, după înlocuire, în ordine inversă,
separate prin exact un spațiu.
Restricţii şi precizări
 dacă pentru un element al vectorului există mai multi cei mai apropiați multipli ai lui k,
elementul va fi înlocui cu cel mai mic dintre aceștia

Exemplu
Intrare
54
17 14 24 25
Ieșire
25 25 15 15
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n,k,i,v[1000],S,s,q;
cin>>k>>n;
for (i=1;i<=n;i++)
cin>>v[i];
for (i=1;i<=n;i++)
{
q=v[i]/k;
S=v[i]-(q*k);
s=v[i]-((q+1)*k);
if (S<0) S=S*(-1);
if (s<0) s=s*(-1);
if (S>s)
v[i]=(q+1)*k;
if (S<s)
v[i]=q*k;
if (S==s)
v[i]=q*k;
}
for (i=n;i>=1;i--)
cout<<v[i]<<" ";
return 0;
}

9. Un număr este de tip “munte” dacă cifrele sale formează inițial un șir strict crescător, apoi
un șir strict descrescător. Se dau n numere naturale. Determinați, pentru fiecare dintre ele,
dacă este de tip “munte”.
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 afișează pentru fiecare dintre cele n numere citite, pe câte o linie a ecranului
valoarea 1, dacă numărul corespunzător este de tip “munte”, respectiv valoarea 0 în caz
contrar.
Exemplu
Intrare
4
15965 156 121 753
Ieșire
1
0
1
0
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n,x,v[1000],a[1000],b[1000],c[1000],u,q,r,k1,k2,t,z,i,p,j,e,k,maxim;
cin>>n;
e=0;
for (j=1;j<=n;j++)
{
cin>>x;
q=0;p=0;r=0;k1=0;
k2=0;t=0;z=0;
maxim=0;k=0;
while (x!=0)
{
u=x%10;
p=p+1;
a[p]=u;
if (u>maxim)
maxim=u;
x=x/10;
}
for (i=1;i<=p;i++)
if (a[i]==maxim)
k=i;
for (i=1;i<k;i++)
{
q=q+1;
b[q]=a[i];
}
for (i=k+1;i<=p;i++)
{
r=r+1;
c[r]=a[i];
}
for (i=1;i<=q-1;i++)
if (b[i]<b[i+1]&&b[i]<maxim&&b[i+1]<maxim)
k1=k1+1;
if (k1==q-1)
t=1;
for (i=1;i<=r-1;i++)
if (c[i]>c[i+1]&&c[i]<maxim&&c[i+1]<maxim)
k2=k2+1;
if (k2==r-1)
z=1;
if (t==1&&z==1)
{
e=e+1;
v[e]=1;
}
else
{
e=e+1;
v[e]=0;
}

}
for (i=1;i<=e;i++)
cout<<v[i]<<endl;
return 0;
}

10. Se dau două şiruri cu elemente numere naturale. Determinaţi câte dintre elementele
primului şir sunt mai mari decât toate elementele celui de-al doilea şir.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii,
reprezentând elementele primului şir. Apoi citeşte numărul m şi m numere naturale, separate
prin spaţii, reprezentând elementele celui de-al doilea şir.
Date de ieşire
Programul afișează pe ecran numărul C, reprezentând numărul de elemente din primul şir
care sunt mai mari decât toate elementele celui de-al doilea şir.
Exemplu
Date de intrare
5
7 8 10 1 9
6
136273
Date de ieșire
3
Explicație
Valorile 8, 10 şi 9, din primul şir, sunt mai mari decât toate elementele celui de-al doilea şir.
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n,x,i,j,a[1000],b[1000],nr,maxim;
nr=0;
maxim=0;
cin>>n;
for (i=1;i<=n;i++)
cin>>a[i];
cin>>x;
for (j=1;j<=x;j++)
cin>>b[j];
for (j=1;j<=x;j++)
{
if (b[j]>maxim)
maxim=b[j];
}
for (i=1;i<=n;i++)
{
if (a[i]>maxim)
nr=nr+1;
}
cout<<nr;
return 0;
}

Probleme propuse

1. Se citește n, apoi n numere naturale distincte, reprezentând elementele unui vector.


Calculaţi indicele imin și indicele imax ai elementului cu valoarea minimă, respectiv cu
valoarea maximă, din vectorul dat.
Date de intrare
Programul citește de numărul n, apoi încă n numere naturale, reprezentând elementele
vectorului.
Date de ieşire
Programul va afișa pe ecran cele două numere imin şi imax, separate printr-un singur spaţiu.
Exemplu
Intrare
5
87925
Ieșire
43
Explicație
Vectorul conține 5 elemente. Valoarea maxima este 9, cu indicele 3, iar valoarea minimă
este 2, cu indicele 4.

2. Se citește un vector cu n elemente, numere naturale. Să se determine suma valorilor


elementelor cuprinse între primul și ultimul element par al vectorului, inclusiv acestea.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând
elementele vectorului.
Date de ieşire
Programul afișează pe ecran numărul S, reprezentând suma calculată. Dacă în vectorul dat
nu există nici un element par, se va afișa mesajul NU EXISTA.
Exemplu
Intrare
5
76128
Ieșire
17
Explicație
17 = 6 + 1 + 2 + 8
3. Se dă un vector cu n numere naturale. Să se determine câte dintre elemente au valoarea
strict mai mare decât media aritmetică a elementelor vectorului.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând
elementele vectorului.
Date de ieşire
Programul afișează pe ecran numărul C, reprezentând valoarea cerută.
Exemplu
Intrare
5
50214
Ieșire
2
Explicație
Media aritmetică a elementelor este 2.4. În vector sunt 2 elemente cu valoarea strict mai
mare decât 2.4: 5 4

4. Se dă un vector cu n numere naturale. Să se determine câte dintre perechile de elemente


din vector sunt prime între ele.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii,
reprezentând elementele vectorului.
Date de ieşire
Programul afișează pe ecran numărul C, reprezentând valoarea cerută.
Exemplu
Intrare
6
51 18 15 28 77 121
Ieșire
9

5. Se citește un vector cu n elemente, numere naturale. Să se determine câte elemente ale


vectorului sunt egale cu diferența dintre cea mai mare și cea mai mică valoare din vector.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând
elementele vectorului.
Date de ieşire
Programul afișează pe ecran numărul cerut.
Exemplu
Intrare
5
77924
Ieșire
2

6. Se dă un vector x cu n elemente, numere naturale. Să se construiască un alt vector, y,


cu n elemente, cu proprietatea că y[i] este egal cu suma elementelor din x, cu excepția
lui x[i].
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii,
reprezentând elementele vectorului.
Date de ieşire
Programul afișează pe ecran cele n elemente ale vectorului y, separate prin exact un spațiu.
Exemplu
Intrare
6
50 5 15 29 35 40
Ieșire
124 169 159 145 139 134

7. Se dă un vector cu n elemente, numere naturale. Să se înlocuiască toate elementele nule


din vector cu partea întreagă a mediei aritmetice a elementelor nenule din vector.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii,
reprezentând elementele vectorului.
Date de ieşire
Programul afișează pe ecran elementele vectorului, după înlocuire.
Exemplu
Intrare
5
02045
Ieșire
32345
Explicație
Elementele nenule din vectorul dat sunt 2, 4 și 5. Media lor aritmetică este 3.666, iar partea
întreagă a ei este 3.

8. Se dă un șir cu n elemente, numere naturale. Să se afișeze, pentru fiecare element din șir,
valoarea din șir aflată după acesta și mai mare decât acesta (Următorul Element Mai Mare).
Dacă o asemenea valoare nu există, se va afișa -1.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului.
Date de ieșire
Programul va afișa pe ecran cele n valori determinate, separate prin câte un spațiu.
Exemplu
Intrare
5
34351
Ieșire
4 5 5 -1 -1

9. Se citeşte n şi un şir de n numere naturale. Calculaţi valoarea maxima maxim a


celor n numere date şi numărul nrmax de apariţii ale acestei valori în şir.
Date de intrare
Fişierul de intrare [Link] conţine pe prima linie numărul n şi pe a doua linie n numere
naturale separate prin spaţii.
Date de ieşire
Fişierul de ieşire [Link] va conţine pe prima linie două numere maxim şi nrmax,
separate printr-un singur spaţiu.
Exemplu
[Link]
5
53245
[Link]
52

10. Se citeşte n şi un şir de n numere naturale. Să se determine câte elemente din şir sunt
numere prime.
Date de intrare
Fişierul de intrare [Link] conţine pe prima linie numărul n şi pe a doua linie n numere
naturale separate prin spaţii.
Date de ieşire
Fişierul de ieşire [Link] va conţine pe prima linie un singur număr natural,
reprezentând numărul de elemente prime din şir.
Exemplu
[Link]
5
25 17 2 10 13
[Link]
3

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