Documente Academic
Documente Profesional
Documente Cultură
Probleme rezolvate
#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 << " ";
}
}
#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;
}
#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;
}
#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;
}
#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;
}
}
}
for (i=1;i<=n;i++)
cout<<v[i]<<" ";
return 0;
}
#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
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