Problems
Problems
Problems
}
cout<<s;
return 0;
}
b)
#include <iostream>
using namespace std;
int main()
{
int v[1001],p=1,nr=0,n,i;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>v[i];
if(i%2!=0 && v[i]<0)
{
p=p*v[i];
nr++;
}
}
cout<<p<<" "<<nr;
return 0;
}
c)
#include <iostream>
using namespace std;
int main()
{
int v[1001],nrn=0,nrp=0,n,i,nr0=0;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>v[i];
if(v[i]>0)
nrp++;
else
if(v[i]==0)
nr0++;
else
if(v[i]<0)
nrn++;
}
cout<<nrp<<" "<<nrn<<" "<<nr0;
return 0;
}
d)
#include <iostream>
using namespace std;
int main()
{
int v[101],n,i,nr=0;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>v[i];
if(i%3==0 && v[i]%2==0)
{
cout<<v[i]<<" ";
nr++;
}
}
if(nr==0)
cout<<"Nu exista astfel de cifre";
return 0;
}
3.
#include <iostream>
using namespace std;
int main()
{
int v[1001],nr=0,n,i,s=0,ma;
cin>>n;
for(i=0;i<n;i++)
{
cin>>v[i];
if(v[i]%2==0)
{
s=s+v[i];
nr++;
}
}
ma=s/nr;
cout<<ma;
return 0;
}
4.
Se citeste un vector cu n numere intregi,apoi se citeste un numar natural k.
Sa se permute circular spre stanga de k ori vectorul v.
#include <iostream>
using namespace std;
int main()
{
int n,k,v[101],i,aux;
cin>>k>>n;
for(i=0;i<n;i++)
cin>>v[i];
while(k!=0)
{
aux=v[0];
for(i=1;i<n;i++)
v[i-1]=v[i];
v[n-1]=aux;
k=k-1;
}
for(i=0;i<n;i++)
cout<<v[i]<<" ";
return 0;
}
ex:k=3 n=5 v={1 2 3 4 5} => 4 5 1 2 3
5.
Se citesc de la tastatura un vector cu n elemente numere reale.
Sa se numere cate dintre numerele vectorului sunt egale cu media aritmetica
a elementelor vectorului fara el insusi.
#include <iostream>
using namespace std;
int main()
{
float v[101],ma,s=0;
int n,i,nr=0,nrv=0;
cin>>n;
for(i=0;i<n;i++)
{
cin>>v[i];
s=s+v[i];
nr++;
}
for(i=0;i<n;i++)
{
ma=(s-v[i])/(nr-1);
if(v[i]==ma)
nrv++;
}
cout<<nrv;
return 0;
}
6.
Se citesc de la tastatura un sir de n numere intregi.Scrieti un program care
afiseaza
cea mai mare diferenta in modul dintre doi termeni consecutivi ai sirului.
#include <iostream>
using namespace std;
int main()
{
int n,i,v[101],c=0,x=0;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
x=abs(v[1]-v[2]);
for(i=3;i<n;i++)
{
c=abs(v[i]-v[i+1]);
if(c>x)
x=c;
}
cout<<x;
return 0;
}
ex:n=6 v={3 11 4 20 7 15} => 16 (|20-4|)
7.
Realizati un program care,pentru un sir de n numere intregi citit de la tastatura,
determina
cele mai mici doua elemente ale sirului.Acestea vor fi afisate pe un rand de
ecran,in ordine
descrescatoare,cu un spatiu intre ele.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n,i,v[101],min1,min2;
cin>>n;
for(i=0;i<n;i++)
cin>>v[i];
min1=min2=v[0];
for(i=1;i<n;i++)
{
if(v[i]<min1)
{
min2=min1;
min1=v[i];
}
else
if(v[i]<min2 && v[i]!=min1)
min2=v[i];
}
cout<<min2<<" "<<min1;
return 0;
}
ex: n=7 v={5 -8 11 3 -9 22 47} => -8 -9
8.
Se citeste de la tastura un sir de n numere intregi.Sa se afiseze toate perechile
de elemente consecutive cu proprietatea ca al doilea element al perechii este egal
cu suma cifrelor primului.
#include <iostream>
using namespace std;
int main()
{
int n,i,v[101],s,x;
cin>>n;
for(i=0;i<n;i++)
cin>>v[i];
for(i=0;i<n-1;i++)
{
s=0;
x=v[i];
while(x!=0)
{
s=s+x%10;
x=x/10;
}
if(v[i+1]==s)
cout<<v[i]<<","<<v[i+1]<<endl;
}
return 0;
}
9.
Se dau doua multimi cu cate n elemente fiecare,definite ca vectori.Sa seafiseze
intersectia
celor doua multimi(elementele lor comune).
#include <iostream>
using namespace std;
int main()
{
int n,i,j,a[101],b[101];
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
for(j=0;j<n;j++)
cin>>b[j];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(a[i]==b[j])
cout<<a[i]<<" ";
return 0;
}
10.
#include <iostream>
using namespace std;
int main()
{
float v[101];
int n,x,nr=0,nr1=0,i;
cin>>n>>x;
for(i=0;i<n;i++)
{
cin>>v[i];
nr=0;
while(v[i]!=(int)v[i])
{
v[i]=v[i]*10;
nr++;
}
if(nr>x)
nr1++;
}
cout<<nr1;
return 0;
}
11.
Se citeste de la tastatura un numar natural n, apoi se citesc n numere intregi.
Sa se tipareasca pe ecran: -pentru primele n numere ultima cifra
-pentru urmatoarele n numere prima cifra a elementelor
-pentru ultimele n numere suma cifrelor
#include <iostream>
using namespace std;
int main()
{
unsigned int n;
int v[1000],i,s,c,a;
cin>>n;
for(i=0;i<3*n;i++)
cin>>v[i];
for(i=0;i<n;i++)
cout<<v[i]%10<<" ";
for(i=n;i<2*n;i++)
{
a=v[i];
while(a!=0)
{
c=a%10;
a=a/10;
}
cout<<c<<" ";
}
for(i=2*n;i<3*n;i++)
{
s=0;
a=v[i];
while(a!=0)
{
s=s+a%10;
a=a/10;
}
cout<<s<<" ";
}
return 0;
}
12.
Se citește din fișierul "date.in" vectorul v,cu n elemente numere întregi,n <=
10000.
Sa se tipărească pe ecran un vector w construit astfel: w[i]=ultima cifră a lui
v[i]
v={127 31 4 59 15} -> w={7 1 4 9 5}
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int v[10001],i,w[10001],n;
ifstream f("date.in");
f>>n;
for(i=0;i<n;i++)
f>>v[i];
for(i=0;i<n;i++)
w[i]=v[i]%10;
for(i=0;i<n;i++)
cout<<w[i]<<" ";
f.close();
return 0;
}
13.
Fisierului text NR.TXT contine pe o singura linie,separate prin cate un singur
spatiu,cel
mult 100 de numere naturale,fiecare numar avand cel mult 4 cifre.Sa se scrie un
program care
citeste toate numerele din fisier si scrie pe ecran,pe o singura linie,separate
prin cate un
spatiu,in ordine crescatoare,toate numerele din fisier care au cel putin trei
cifre.
Daca fisierul nu contine astfel de numere se va afisa mesajul "NU EXISTA".
123 7 3844 459 9 68 -> 123 459 3844
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int v[101],i=0,n,x,j,aux;
ifstream f("NR.TXT");
while(f>>x)
if(x>=100)
{
v[i]=x;
i++;
}
n=i;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(v[i]>v[j])
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
if(n==0)
cout<<"NU EXISTA";
else
for(i=0;i<n;i++)
cout<<v[i]<<" ";
f.close();
return 0;
}
14.
Find dat un vector v cu n elemente numere intregi, sa se construiasca un alt vector
u
care sa contina numai patratele perfecte ordonate crecator.
ex: n=10 v={ -5 -9 3 4 7 16 1 -3 -15 8 } -> u={ 1 4 16 }
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int v[100],n,u[100],aux,aux2,j=0,i;
cin>>n;
for(i=0;i<n;i++)
cin>>v[i];
for(i=0;i<n;i++)
{
aux=sqrt(v[i]);
if(sqrt(v[i])==(int)(aux))
{
u[j]=v[i];
j++;
}
}
for(i=0;i<j;i++)
{
if(u[i]>u[i+1])
{
aux2=u[i];
u[i]=u[i+1];
u[i+1]=aux2;
}
cout<<u[i]<<" ";
}
return 0;
}
15.
Un vector cu n elemente numere reale n<100.Sa se afiseze toate tripletele de
elemente
consecutive cu proprietatea ca al doilea element este media aritmetica dintre
primul si
al treilea.
n=8 v={ 2 3 5 10 15 20 9 -2} -> (5 10 15) (10 15 20) (20 9 -2)
#include <iostream>
using namespace std;
int main()
{
int n,i;
float v[101];
for(i=0;i<n;i++)
cin>>v[i];
for(i=1;i<n-1;i++)
if(v[i]==(v[i-1]+v[i+1])/2
cout<<v[i-1]<<" "<<v[i]<<" "<<v[i+1]<<endl;
return 0;
}
16.
Se citesc de la tastatura 2 vectori sortati, x cu n elemente sortat crescator,
y cu m elemente sortat descrescator.Sa se tipareasca pe ecran toate numerele
intalnite
in cei 2 vectori, fara dubluri, ordonate crescator.
x={ 1 3 4 6 7 }
y={ 10 8 7 6 5 2 0 }
-> z={ 0 1 2 3 4 5 6 7 8 10 }
#include <iostream>
using namespace std;
int main()
{
int x[100],y[200],z[301],m,n;
cin>>m>>n;
for(int i=0;i<n;i++)
cin>>x[i];
for(int i=m-1;i>=0;i--)
cin>>y[i];
int a=0,b=0,c=0;
while(a<n && b<m)
{
if(x[a]<y[b])
{
z[c]=x[a];
a++;
}
else
{
z[c]=y[b];
b++;
}
c++;
}
while(a<n)
{
z[c]=x[a];
a++;
c++;
}
while(b<m)
{
z[c]=y[b];
b++;
c++;
}
for(int i=0;i<c-1;i++)
if(z[i]!=z[i+1])
cout<<z[i]<<" ";
17.Vectorul de frecventa(vector caracteristica)
Din fisierul numere.in se citesc cel mult 1 milion de numere naturale cu cel mult 2
numere
fiecare.Sa se scrie un program care afiseaza in numere.out toate numerele citite in
ordine
crescatoare.
f: 121 3 14 1 9 1 3
g: 1 1 3 3 9 14 121
#include <iostream>
using namespace std;
int main()
{
ifstream f("numere.in");
ofstream g("numere.out");
unsigned int x,i,ap[101]={};
ap[x]++; //incarcarea vectorului de aparitie
for(i=0;i<=99;;i++)
{
while(ap[i]!=0)
{
g<<i<<" ";
ap[i]--;
}
}
f.close();
g.close();
return 0;
}
18.
Fisierul numere.txt contine cel mult 1 milion numere naturale cu cel mult 2 cifre
fiecare.
Scrieti un program care citeste numerele din fiser si afiseaza pe ecran doar
numerele pare
ordoante crescator.
f: 2 3 1 4 7 2 12 8 6 -> v={ 2 2 4 6 8 12 }
a)
unsigned int v[1000000],i=0,x;
while(f>>x)
{
if(x%2==0)
{
v[i]=x;
i++;
}
}
//sortez crescator
b)
unsigned int ap[101]={},x,i;
while(f>>x)
if(x%2==0)
ap[x]++;
for(i=0;i<=98;i=i+2)
if(ap[i]!=0)
while(ap[i]!=0)
{
cout<<i<<" ";
ap[i]--;
}
19.
Fisierul bac.txt contine mai multe numere naturale distincte.Scrieti un program
care citeste
numerele din fisier si scrie pe ecran ultima cifra a produsului celor mai mari 3
numere.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f("bac.txt");
unsigned int n,max1,max2,max3;
f>>n;
vmax1=vmax2=vmax3=n;
while(f>>n)
{
if(n>vmax1)
{
vmax3=vmax2;
vmax2=vmax1;
vmax1=n;
}
else
if(n>vmax2)
{
vmax3=vmax2;
vmax2=n;
}
else
if(n>vmax3)
vmax3=n;
}
cout<<(vmax1*vmax2*vmax3)%10;
return 0;
}
20.
Se citeste de la tastatura un vector de elemente numere intregi(n<=200),sortat
descrescator.
Sa se verifice daca valoarea 100 se gaseste in vector, daca da sa se returneze
pozitia pe
care se gaseste, daca nu, mesaj ca nu se gaseste.
ls=0;
ld=n-1;
ok=0;
while(ls<=ld && ok==0)
{
mij=(ls+ld)/2;
if(x==v[mij])
ok=1;
else
if(x<v[mij])
ls=mij+1;
else
ld=mij-1;
}
if(ok==1)
cout<<x<<" "<<"se gaseste in vector pe pozitia"<<mij;
else
cout<<x<<" "<<"nu se gaseste in vector";
21.
Se citeste de la tastatura un sir de n numere intregi.Sa se insereze la mijlocul
sirului
media aritmetica a elementelor sale.
n=4 { 8 -3 12 4 } -> { 8 -3 5.25 12 14 }
#include <iostream>
using namespace std;
int main()
{
int n,i;
float v[100],ma,s=0;
cin>>n;
for(i=0;i<n;i++)
{
cin>>v[i];
s=s+v[i];
}
ma=s/n;
for(i=n-1;i>=n/2;i--)
v[i+1]=v[i];
v[n/2]=ma;
for(i=0;i<n+1;i++)
cout<<v[i]<<" ";
return 0;
}
22.
Se citeste un vector cu n elemente numere intregi(n<500).Sa se insereze dupa
fiecare valoare
para cifra 0, apoi sa se tipareasca vectorul.
#include <iostream>
using namespace std;
int main()
{
int v[500],n,i,j;
cin>>n;
for(i=0;i<n;i++)
cin>>v[i];
for(i=0;i<n;i++)
{
if(v[i]%2==0)
{
for(j=n-1;j>=i;j--)
v[j+1]=v[j];
n++;
v[i+1]=0;
i++;
}
}
for(i=0;i<n;i++)
cout<<v[i]<<" ";
return 0;
}
23.
Sa se elimine toate elementele vectorului care au ultima cifra 3.
#include <iostream>
using namespace std;
int main()
{
int v[500],i,n,j;
cin>>n;
for(i=0;i<n;i++)
cin>>v[i];
for(i=0;i<n;i++)
{
if(v[i]%10==3)
{
for(j=1;j<n;j++)
v[j]=v[j+1];
n--;
}
}
for(i=0;i<n;i++)
cout<<v[i]<<" ";
return 0;
}
24.
Pentru vector de secventa:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f("cifreord.in");
ofstream g("cifreord.out");
int n,x,i,ap[11]={},nr=0;
f>>n;
for(i=0;i<n;i++)
{
f>>x;
ap[x]++;
}
for(i=0;i<=9;i++)
if(ap[i]!=0)
while(ap[i]!=0)
nr++;
if(n%20==0)
{
cout<<i<<" ";
ap[i]--;
}
f.close();
g.close();
return 0;
}
25.
Se citeste un vector cu n elemete nr intregi(n<=500)
a)Sa se elimine toate elementele prime din vector
b)Sa se tipareasca cele mai mici 2 elemente ale vectorului
c)Sa se numere cate elemente din vector k au exact k divizori
a)
#include <iostream>
using namespace std;
int main()
{
int n,i,v[500],ok,j;
cin>>n;
for(i=0;i<n;i++)
cin>>v[i];
for(i=0;i<n;i++)
{
ok=1;
if(v[i]==0 || v[i]==1)
ok=0;
else
{
for(j=2;j<v[i]/2;j++)
if(v[i]%j==0)
ok=0;
}
if(ok==1)
{
for(j=i;j<n-1;j++)
v[j]=v[j+1];
n--;
}
i--;
}
for(i=0;i<n;i++)
cout<<v[i]<<" ";
return 0;
}
b)
#include <iostream>
using namespace std;
int main()
{
int v[501],min1,min2,n,i;
cin>>n;
min1=min2=v[0];
for(i=0;i<n;i++)
cin>>v[i];
for(i=0;i<n;i++)
{
if(v[i]<min1)
{
min2=min1;
min1=v[i];
}
else
if(v[i]<min2 && v[i]!=min1)
min2=v[1];
}
cout<<min1<<" "<<min2;
return 0;
}
c)
#include <iostream>
using namespace std;
int main()
{
int n,v[501],i,j,k,m,contor=0,nr;
cin>>n>>k;
for(i=0;i<n;i++)
cin>>v[i];
for(i=0;i<n;i++)
{
nr=0;
for(j=1;j<=v[i];j++)
{
if(v[i]%j==0)
nr++;
if(nr==k)
contor++;
}
}
cout<<contor;
return 0;
}
26.
Se citeste de la tastatura un vector cu n elemente numere
intregi(n<=500).Elementele pare
ale vectorului sa se sorteze crescator,elementele impare descrescator.
v={ 5 1 4 3 2 0 6 } -> v={ 5 3 0 1 2 4 6 }
#include <iostream>
using namespace std;
int main()
{
int n,i,j,v[501];
cin>>n;
for(i=0;i<n;i++)
cin>>v[i];
for(i=0;i<n;i++)
{
if(v[i]%2==0)
for(j=i+1;j<i;j++)
if(v[j]%2==0)
if(v[i]>v[j])
swap(v[i],v[j]);
}
27.
Fisierul text bac.txt contine pe prima linie un numar natural n,iar pe a doua linie
n numere
naturale.Se citeste de la tastatura un numar natural k(k<10) precum si numerele din
fisier,
apoi determina toate numerele din fisier care contin in scrierea lor cifra k.Daca
nu exista
un astfel de numar se afiseaza mesajul "Nu exista".
k=2 f: n=8 { 234 5678 317 809 202 427 92 64 } -> 234 202 427 92
28.
Se citesc din fisierul "date.in" cel mult 1o milioane de cifre(0,1,2,...,9).Sa se
afiseze
pe ecran cifra care s-a cititde cele mai multe ori
-incarcam vectorul de aparitii
-aflam maximul in vectorul de aparitii
-tiparim i daca max=ap[i]
#include <iostream>
#include >fstream>
using namespace std;
int main()
{
ifstream f("date.in")
ofstream g("date.out")
int x,i,ap[11]={},vmax;
while(f>>x)
ap[x]++; //am incarcat vectorul de aparitie
//calculez max in ap
vmax=0;
for(i=0;i<=9;i++)
if(ap[i]>vmax)
vmax=ap[i];
for(i=0;i<=9;i++)
if(ap[i]==max)
cout<<i<<" ";
f.close();
return 0;
}
29.
Fisierul bac.txt contine 100 de numere naturale de cel mult 4 cifre
fiecare,numerele sunt
ordonate crescator.Pe a doua linie se gaseste un numar natural x.Scrieti un program
care
citeste toate numerele din fisier si verifica daca x se afla in sirul celor 100 de
numere,
in caz afirmativ se va afisa "Da", altfel "Nu".
a)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f("bac.txt");
unsigned int i,v[101],ok,x;
for(i=0;i<100;i++)
f>>v[i];
f>>x;
ok=0;
for(i=0;i<100;i++)
{
if(v[i]==x)
ok=1;
if(ok==1)
cout<<"Da";
else
cout<<"Nu";
}
f.close;
return 0;
}
b)Cautare binara
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f("bac.txt");
unsigned int x,v[101],mij,ok=0,st,dr,c,poz;
for(i=1;i<n;i++)
f>>v[i];
f>>x;
st=0;
dr=n-1;
while(st<=dr && ok==0)
{
mij=(st+dr)/2;
if(v[mij]==x)
{
ok=1;
poz=mij;
}
else
if(x>v[mij])
st=mij+1;
else
dr=mij-1;
}
if(ok==1)
cout<<"Da"<<" "<<poz;
else
cout<<"Nu";
f.close();
return 0;
}
251 284 292 4103 1365 1366 267 244 767 658 659
30.
Se citeste un vector v de lungime n(n<=1000), care contine numere intregi si un
numar intreg
x.Sa se elimine fiecare aparitie a lui x din vectorul x.
n=3 v={ 3 3 2 5 3 2 } x=3 => v={ 2 5 2 }
31.
Se citeste un numar natural n(n<=1000), apoi un sir de n numere naturale cuprinse
intre
1 si 100.Se citeste de asemenea un numar natural k.Sa se afiseze elementele care
apar de
exact k ori in sir.
n=10 a={ 4 2 8 4 2 8 8 4 5 1 } k=3 => 4 8
32.
Se citeste un numar natural n(n<=1000), apoi un sir de n numere naturale cuprinse
intre 1 si
100.Se citeste de asemenea un numar natural k.Sa se afiseze elementele care apar de
exact k
ori in sir.
n=10 a={ 4 2 8 4 2 8 8 4 5 1 } k=3 => 4 8
33.
Se citeste un vector v de lungime n(n<=1000), care contine numere intregi si un
numar intreg
x.Sa se elimine fiecare aparitie a lui x din vectorul v.
v={ 3 3 2 5 3 2 } x=3 => v={ 2 5 2 }