Sunteți pe pagina 1din 17

///afiseaza prima jumătate a vectorului crescator și a doua jumatate

descrescător. Stiind ca vectorul este ordonat crescator


#include <iostream>

using namespace std;

int main()

int i,n,a[1001],k;

cin>>n;

for(i=1; i<=n; i++)

cin>>a[i];///citim vectorul

for(i=1; i<=n/2; i++) ///afisam prima jumatate crescator

cout<<a[i]<<" ";

for(i=n; i>n/2; i--) ///afisam a doua jumatate descrescator

cout<<a[i]<<" ";

return 0;

Exemplu:

Date intrare: 6

123456

Date iesire : 1 2 3 6 5 4

///afișează elementele care au aceeași paritate cu ultimul element al


vectorului
#include <iostream>

using namespace std;

int main()

int i,n,a[1001],k;

cin>>n;

for(i=1; i<=n; i++)


cin>>a[i];///citim vectorul

k=a[n]%2;///k este paritatea ultimului element

for(i=1; i<=n; i++)

if(a[i]%2==k)///verificam daca au aceeași paritate

cout<<a[i]<<" "; ///afișam elementele care îndeplinesc condiția

return 0;

Exemplu:

Date intrare: 5

12345

Date iesire : 1 3 5
///.Se dă un vector cu n numere naturale, n fiind număr par. Să se
verifice dacă toate perechile de elemente egal depărtate de capetele
vectorului au elemente egale.
#include <iostream>

using namespace std;

int main()

{ int i,a[1001],n,ok;

cin>>n;

for(i=1;i<=n;i++) ///citim vectorul

cin>>a[i];

ok=1;

for(i=1;i<=n;i++)

if(a[i]!=a[n-i+1])///daca gasim doau elemente diferite conditia cade

ok=0;

if(ok==1)

cout<<"DA";///afiseaza da in caz afirmativ

else

cout<<"NU";///afiseaza nu in caz contrar

} Exemplu:

Date intrare: 6

123321

Date iesire : DA
///Se dă un vector cu n numere naturale, n fiind număr par. Să se
verifice dacă toate perechile de elemente egal depărtate de capetele
vectorului au elemente egale.
#include <iostream>

using namespace std;

int main()

{ int i,a[1001],n,ok;

cin>>n;

for(i=1;i<=n;i++) ///citim vectorul

cin>>a[i];

ok=1;

for(i=1;i<=n;i++)

if(a[i]==a[n-i+1])///daca gasim doau elemente asemenea conditia cade

ok=0;

if(ok==1)

cout<<"DA";///afiseaza da in caz afirmativ

else

cout<<"NU";///afiseaza nu in caz contrar

Exemplu:

Date intrare: 6

123321

Date iesire : NU
///Să se șteargă din vector toate elementele care sunt numere
prime.
#include <iostream>

using namespace std;

int estePrim(int x)///scriem functia prim

if(x<2)

return 0;

if(x==2)

return 1;

if(x%2==0)

return 0;

for(int d=3;d*d<=x;d=d+2)

if(x%d==0)

return 0;

return 1;

int main()

{int n,k,a[1501],p;

cin>>n;

for(int i=1;i<=n;i++)

cin>>a[i];

k=0;

for(int i=1;i<=n;i++)
if(estePrim(a[i])==0)///daca gasim un numar tram in vector nu este prim il pas

k++;

a[k]=a[i];

n=k;

for(int i=1;i<=n;i++)

cout<<a[i]<<" ";

return 0;

Exemplu:

Date intrare: 5
7 8 9 17 1

Date iesire : 8 9 1

/// Să se șteargă din vector toate elementele egale


cu cea mai mică valoare din vector.
#include <iostream>

using namespace std;

int main()

{int n,a[10001],minn=10002;

cin>>n;

for(int i=1;i<=n;i++)

cin>>a[i];

for(int i=1;i<=n;i++)///calculam minimul

if(a[i]<minn)

minn=a[i];

int k=0;
for(int i=1;i<=n;i++)///pastram in vector doar elementele doar diferite de minim

if(a[i]!=minn)

{k++;

a[k]=a[i];

n=k;

for(int i=1;i<=n;i++)

cout<<a[i]<<" ";

return 0;

Exemplu:

Date intrare: 7
7 1 4 2 1 6 1

Date iesire : 7 4 2 6
///Să se insereze în șir după fiecare element par dublul său.
#include <iostream>

using namespace std;

int main()

{int i,n,v[1001],k,x,p;

cin>>n;

for(int i=1;i<=n;i++)

cin>>v[i];

i=1;

while(i<=n)

if(v[i]%2==0)///daca elementul este par

for(k=n;k>=i;k--)///deplasam spre dreapta vectorul

v[k+1]=v[k];

v[i+1]=v[i]*2;///ii atribim urm . valori dublul ei

n++;

i=i+2;

else

i++;
}

for(int i=1;i<=n;i++)

cout<<v[i]<<" ";

return 0;

Exemplu:

Date intrare: 5
7 3 4 1 6

Date iesire : 7 3 4 8 1 6 12

/// Să se transforme vectorul, duplicând fiecare


apariție a valorii minime.
#include <iostream>

using namespace std;

int main()

{int n,a[10001],minn;

cin>>n;

for(int i=1;i<=n;i++)

cin>>a[i];

minn=1002;

for(int i=1;i<=n;i++)///calculam minimul

if(a[i]<minn)

minn=a[i];

int i=1;

while(i<=n)

{
if(a[i]==minn)///daca gasim minimul in vector

for(int k=n;k>=i;k--)

a[k+1]=a[k];///mutam vectorul spre dreapta

a[i]=minn;///ii atribui urmatoarei poziti val min

i=i+2;

n++;

else

i++;

for(int i=1;i<=n;i++)

cout<<a[i]<<" ";

return 0;

Exemplu:

Date intrare: 7
7 9 4 2 1 6 1

Date iesire : 7 9 4 2 1 1 6 1 1
///Afișați în ordine descrescătoare valorile
divizibile cu 10 din acest vector.
#include <iostream>

using namespace std;

int main()

int n,k,v[1001],aux,ok;

cin>>n;

for(int i=1;i<=n;i++)

cin>>v[i];

k=0;

for(int i=1;i<=n;i++)///stergem valorile care nu sunt divizibile cu 10

if(v[i]%10==0)

k++;

v[k]=v[i];

n=k;

do{
ok=1;

for(int i=1;i<k;i++)///sortam elementele vectorului descrescator

if(v[i]<v[i+1])

aux=v[i];

v[i]=v[i+1];

v[i+1]=aux;

ok=0;

}while(ok!=1);

if(n>0){

for(int i=1;i<=n;i++)

cout<<v[i]<<" ";}

else

cout<<"NU EXISTA";

Exemplu:

Date intrare: 7
13 1 10 15 3 700 110

Date iesire : 700 110 10

///Ordonați crescător primele k elemente ale


vectorului și descrescător ultimele n-k elemente.
#include <iostream>

using namespace std;

int main()

{int i,n,b,a[10001];

cin>>n>>b;

for(int i=1;i<=n;i++)

cin>>a[i];
for(i=1;i<b;i++)

for(int j=i+1;j<=b;j++)///sortez cresc pana la elementul b

if(a[i]>a[j])

int aux=a[i];

a[i]=a[j];

a[j]=aux;

for(i=b+1;i<n;i++)

for(int j=i+1;j<=n;j++)///sortez descresc. de la elementul b+1 pana la n

if(a[i]<a[j])

int aux=a[i];

a[i]=a[j];

a[j]=aux;

for(int i=1;i<=n;i++)

cout<<a[i]<<" ";

return 0;

Vezi ca nu prea am gasit probleme la


interclasare si la cutare binara am
doar 2 probleme pe pbinfo rezolvate
///Determinaţi cifrele cu număr maxim de apariţii.
///propblema va fi scrisa in fisierul text maxcif
#include <iostream>

#include <fstream>

using namespace std;

ifstream fin("maxcif.in");

ofstream fout("maxcif.out");

int main()

{int i,n,a[10]={0},maxx=-1,maxx1=-1;

i=0;

while(fin>>n)///citim vectorul

a[n]++; ///facem un vector de frecventa

if(a[n]>maxx)///calculam maximul

maxx=a[n];
}

for(i=0;i<=9;i++)

if(a[i]==maxx)

fout<<i<<" ";

return 0;

Exemplu:

Date intrare: 5 6 4 1 2
5 7 2

Date iesire : 2 5

/// Să se determine cele mai mari două numere de 3 cifre care nu se găsesc printre numerele date.

///propblema va fi scrisa in fisierul text nrlipsa

#include <iostream>

#include <fstream>

using namespace std;

ifstream fin("nrlipsa.in");

ofstream fout("nrlipsa.out");

int main()

int x,y,v[1000]={0};

while(fin>>x){

if(x>=100 and x<=999)

v[x]=1;///facem un vector caracteristic


}

x=999;

while(v[x]==1 and x>=100)

x--;///cautam primul nr lipsa

if(x>=100)

y=x-1;

while(v[y]==1 and y>=100)

y--;///il cautam pe al doilea

if(y>=100)

fout<<x<<" "<<y;

else

fout<<"NU";

else

fout<<"NU";

return 0;

Exemplu:

Date intrare: 12 2345 123 67 989 6 999 123 67 989 999

Date iesire : 998 997


,

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