Sunteți pe pagina 1din 10

LABORATOR – VECTORI – ȘTERGERI, INSERĂRI

Probleme rezolvate

1. Se dă un șir cu n elemente întregi și un număr p. Să se șteargă din șirul X elementul aflat


pe poziția p.
Date de intrare
Programul va citi de la tastatură două valori n p, cu semnificația precizată, apoi n numere
întregi reprezentând elementele șirului.
Date de ieşire
Programul va afișa pe ecran n-1 valori întregi, separate printr-un spațiu, reprezentând
elementele șirului după ștergere.
Exemplu
Date de intrare
52
73916
Date de ieșire
7916
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n, p;
cin >> n >> p;
for (int i = 1; i <= n; i++)
{
int x;
cin >> x;
if (i != p)
cout << x << " ";
}
}

2. Se dă un vector cu n elemente numere naturale. Să se șteargă din vector toate


elementele care sunt numere prime.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii,
reprezentând elementele vectorul.
Date de ieşire
Programul afișează pe ecran, separate prin spații, elementele vectorului obținut prin
ștergerea elementelor prime.
Exemplu
Intrare
5
7 8 9 17 1
Ieșire
891
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n,i,j,v[1000];
cin>>n;
for (i=1;i<=n;i++)
cin>>v[i];
i=1;
while (i<=n)
{
bool prim = true;
if (v[i] % 2 == 0 && v[i] != 2)
prim = false;
if (v[i] < 2)
prim = false;
for (int j = 3; j * j <= v[i]; j+=2)
if (v[i] % j == 0)
prim = false;
if (prim)
{
for (j=i;j<=n-1;j++)
v[j]=v[j+1];
n=n-1;
}
else
i++;
}
for (i=1;i<=n;i++)
cout<<v[i]<<" ";
return 0;
}

3. Se dă un vector cu n elemente numere naturale. Să se șteargă din vector toate


elementele pare.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii,
reprezentând elementele vectorul.
Date de ieşire
Programul afișează pe ecran, separate prin spații, elementele vectorului obținut prin
ștergerea elementelor pare.
Exemplu
Intrare
7
7942165
Ieșire
7915
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n,i,j,v[1000];
cin>>n;
for (i=1;i<=n;i++)
cin>>v[i];
i=1;
while (i<=n)
{

if (v[i] % 2 == 0)
{
for (j=i;j<=n-1;j++)
v[j]=v[j+1];
n=n-1;
}
else
i++;
}
for (i=1;i<=n;i++)
cout<<v[i]<<" ";
return 0;
}

4. Se dă un șir cu n elemente întregi, valoare întreagă X și un număr p. Să se insereze pe


poziția p în șir valoarea X.
Date de intrare
Programul va citi de la tastatură trei valori n, X, p, cu semnificația precizată, apoi n numere
întregi reprezentând elementele șirului.
Date de ieşire
Programul va afișa pe ecran n+1 valori întregi, separate printr-un spațiu, reprezentând
elementele șirului după inserare.
Exemplu
Date de intrare
5 10 2
73916
Date de ieșire
7 10 3 9 1 6
Rezolvare

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

5. Se dă un șir cu n elemente naturale. Să se insereze în șir după fiecare element par dublul
său.
Date de intrare
Programul va citi de la tastatură numărul n, apoi n numere naturale reprezentând elementele
șirului.
Date de ieşire
Programul va afișa pe ecran elementele șirului obținut după inserare, separate printr-un
spațiu.
Exemplu
Date de intrare
5
73416
Date de ieșire
7 3 4 8 1 6 12
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n,i,v[1000],k,a;
cin>>n;
for (i=1;i<=n;i++)
cin>>v[i];
for (i=1;i<=n;i++)
{
if (v[i]%2==0)

{
k=i+1;
a=v[i];
for (i=n+1;i>=k+1;i--)
v[i]=v[i-1];
v[k]=2*a;
n=n+1;
}
}
for (i=1;i<=n;i++)
cout<<v[i]<<" ";
return 0;
}

6. Se dă un șir cu n elemente naturale.


Cerinţa
Să se insereze în șir înaintea fiecărui element pătrat perfect rădăcina sa pătrată.
Date de intrare
Programul va citi de la tastatură numărul n, apoi n numere naturale reprezentând elementele
șirului.
Date de ieşire
Programul va afișa pe ecran elementele șirului obținut după inserare, separate prin câte un
spațiu.
Exemplu
Date de intrare
5
73419
Date de ieșire
73241139
Rezolvare

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n,c,i,v[1000],k;
cin>>n;
for (i=1;i<=n;i++)
cin>>v[i];
for (i=1;i<=n;i++)
{
c=sqrt(v[i]);
k=i;
if (int (sqrt(v[i]))==float (sqrt(v[i])))
{
for (k=n+1;k>=i+1;k--)
v[k]=v[k-1];
v[i]=c;
n=n+1;
i++;
}
}
for (i=1;i<=n;i++)
cout<<v[i]<<" ";
return 0;
}

7. Se dau n numere întregi. Să se insereze între oricare două numere de aceeași paritate


media lor aritmetică.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere întregi, separate prin spații.
Date de ieșire
Programul va afișa pe ecran elementele noului șir de numere obținut după inserarea
elementelor, separate prin câte un spațiu.
Exemplu
Intrare
5
1 21 3 4 8
Ieșire
1 11 21 12 3 4 6 8
Rezolvare
#include <iostream>
using namespace std;
int main()
{
int n,i,v[1000],Ma,k;
cin>>n;
for (i=1;i<=n;i++)
cin>>v[i];
for (i=1;i<=n-1;i++)
{
if ((v[i]%2==0&&v[i+1]%2==0)||(v[i]%2!=0&&v[i+1]%2!=0))
{
Ma=(v[i]+v[i+1])/2;
k=i+1;
for (i=n+1;i>=k+1;i--)
v[i]=v[i-1];
v[k]=Ma;
n=n+1;

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

8. Se dă un vector cu n elemente numere naturale. Determinați toate permutările circulare


spre stânga ale vectorului.
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, fiecare pe câte o linie, permutările circulare spre stânga ale
vectorului, elementele fiecărei permutări fiind separate printr-un spațiu
Exemplu
Intrare
5
72845
Ieșire
72845
28457
84572
45728
57284
Rezolvare

#include <iostream>
using namespace std;
int main()
{
int n,i,x,v[100],j;
cin>>n;
for (i=1;i<=n;i++)
cin>>v[i];
for (i=1;i<=n;i++)
cout<<v[i]<<" ";
cout<<endl;
for (j=1;j<=n-1;j++)
{
x=v[1];
for (i=1;i<=n-1;i++)
v[i]=v[i+1];
v[n]=x;
for (i=1;i<=n;i++)
cout<<v[i]<<" ";
cout<<endl;
}
return 0;
}

9. În fișierul date.in se dau un număr n și apoi n numere naturale. Ștergeti în mod repetat
câte două numere alăturate egale și afișați în fișierul date.out numărul de ștergeri efectuate,
precum și numerele rămase.

Exemplu:
date.in
12
123443223396
date.out
4
1296
Explicație: se șterg pe rând 4 perechi: 4,4 3,3 2,2 si 3,3
Rezolvare

#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("date.in");
ofstream fout ("date.out");
int main ()
{
int n, v[25005],z=0;
fin>>n;
for(int i=1; i<=n; i++)
{
fin >>v[i];
if(i>1)
if(v[i]==v[i-1]) //valori alăturate egale
{
z++;
n=n-2;//fac ștergerile direct de la citire
i=i-2;
}
}
fout<<z<<endl;
for(int i=1;i<=n;i++) fout<<v[i]<<" ";
return 0;
}
Explicație: Făcând ștergerile direct de la citire, nu se mai pierde timp cu mutarea valorilor
spre stânga ca în cazul ștergerii din vector.

Probleme propuse

1. Se dă un șir cu n elemente întregi distincte. Să se șteargă din șirul X elementul maxim din


șir.
Date de intrare
Programul va citi de la tastatură o valoare n, apoi n numere întregi reprezentând elementele
șirului.
Date de ieşire
Programul va afișa pe ecran n-1 valori întregi, separate printr-un spațiu, reprezentând
elementele șirului după ștergere.
Exemplu
Date de intrare
5
73916
Date de ieșire
7316

2. Se dă un vector cu n elemente numere naturale. Să se șteargă din vector toate


elementele care sunt numere perfecte (un număr este perfect dacă este egal cu suma
divizorilor săi fără el însuș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 vectorul.
Date de ieşire
Programul afișează pe ecran, separate prin spații, elementele vectorului obținut prin
ștergerea elementelor perfecte.
Exemplu
Intrare
5
7 6 9 28 1
Ieșire
791

3. Se dă un vector cu n elemente numere naturale. Să se șteargă din vector toate


elementele palindroame (egale cu răsturnatul lor).
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii,
reprezentând elementele vectorul.
Date de ieşire
Programul afișează pe ecran, separate prin spații, elementele vectorului obținut prin
ștergerea elementelor pare.
Exemplu
Intrare
7
17 9 434 23 11 6 52
Ieșire
17 23 52

4. Se dă un șir cu n elemente întregi cu elementele distincte. Să se insereze înaintea


elementului maxim din vector, elementul minim.
Date de intrare
Programul va citi de la tastatură o valoare n, apoi n numere întregi reprezentând elementele
șirului.
Date de ieşire
Programul va afișa pe ecran n+1 valori întregi, separate printr-un spațiu, reprezentând
elementele șirului după inserare.
Exemplu
Date de intrare
5
73916
Date de ieșire
731916

5. Se dă un șir cu n elemente naturale. Să se insereze în șir înaintea fiecare element impar


dublul său.
Date de intrare
Programul va citi de la tastatură numărul n, apoi n numere naturale reprezentând elementele
șirului.
Date de ieşire
Programul va afișa pe ecran elementele șirului obținut după inserare, separate printr-un
spațiu.
Exemplu
Date de intrare
5
73416
Date de ieșire
14 7 6 3 4 2 1 6

6. Se dă un șir cu n elemente naturale. Să se insereze în șir după fiecare element prim


ultima cifră a sa.
Date de intrare
Programul va citi de la tastatură numărul n, apoi n numere naturale reprezentând elementele
șirului.
Date de ieşire
Programul va afișa pe ecran elementele șirului obținut după inserare, separate prin câte un
spațiu.
Exemplu
Date de intrare
5
71 344 41 18 9
Date de ieșire
71 1 344 41 1 18 9
7. Se dau n numere întregi. Să se insereze între oricare două numere care au același număr
de cifre, suma lor.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere întregi, separate prin spații.
Date de ieșire
Programul va afișa pe ecran elementele noului șir de numere obținut după inserarea
elementelor, separate prin câte un spațiu.
Exemplu
Intrare
5
1 21 3 4 8
Ieșire
1 21 3 7 4 12 8

8. Se dă un vector cu n elemente numere naturale. Determinați toate permutările circulare


spre dreapta ale vectorului.
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, fiecare pe câte o linie, permutările circulare spre dreapta ale
vectorului, elementele fiecărei permutări fiind separate printr-un spațiu
Exemplu
Intrare
5
72845
Ieșire
72845
57284
45728
84572
28457

9. În fișierul date.in se dau un număr n și apoi n numere naturale. Eliminați din vector
elementele egale cu primul, de cîte ori apar.

Exemplu:
date.in
12
123143213196
date.out
8
23432396

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