Sunteți pe pagina 1din 2

/*

Se citeste un vector A cu n (n<=100) elemente numere naturale.


Ordonati crescator elementele prime si plasati-le la inceputul vectorului
si apoi descrescator pe cele neprime, in a doua parte a vectorului.
Afisati vectorul ordonat ca in cerinta.
*/
#include <stdio.h>
int main()
{
int i,j,k,naux,ndiv,nx,aux,n;
int v[100],prim[100],nonprim[100];
//introducere marime VECTOR
printf("\nIntroduceti marimea vectorului dorit (pana la 100 de elemente)\n");
scanf("%d",&n);
printf("\nVectorul dorit are marimea:%d\n",n);
//introducere elemente VECTOR
for(i=1;i<=n;i++)
{
printf("\nIntroduceti v[%d]: ",i);
scanf("%d",&v[i]);
printf("\nAti introdus v[%d]=%d\n",i,v[i]);
}
//afisare elemente VECTOR
printf("\nVectorul introdus este urmatorul:\n");
for(i=1;i<=n;i++)
{
printf("[%d]",v[i]);
}
//verificare elemente prime/nonprime si plasare in vectori auxiliari
j=1;
k=1;
for(i=1;i<=n;i++)
{
ndiv=0;
for(naux=1;naux<=v[i]/2;naux++)
{
if (v[i]%naux==0)
ndiv++;
}
if (ndiv==1)
{
prim[j]=v[i];
j++;
printf("\n%d este prim\n",v[i]);
}
else
{
nonprim[k]=v[i];
k++;
}
}
//sortare crescatoare vector numere prime
nx=0;
while (nx==0)
{
nx=1;
for(i=1;i<j;i++)
{
if (prim[i]>prim[i+1])
{
aux=prim[i];
prim[i]=prim[i+1];
prim[i+1]=aux;
nx=0;
}
}
}
//afisare vector numere prime
printf("\nVectorul sortat de numere prime este urmatorul:\n");
for(i=1;i<j;i++)
{
printf("[%d]",prim[i]);
}
//sortare descrescatoare vector numere nonprime
nx=0;
while (nx==0)
{
nx=1;
for(i=1;i<k;i++)
{
if (nonprim[i]<nonprim[i+1])
{
aux=nonprim[i];
nonprim[i]=nonprim[i+1];
nonprim[i+1]=aux;
nx=0;
}
}
}
//afisare vector numere nonprime
printf("\nVectorul sortat de numere nonprime este urmatorul:\n");
for(i=1;i<k;i++)
{
printf("[%d]",nonprim[i]);
}
//reintegrare elemente in vector initial
for (i=1;i<j;i++)
{
v[i]=prim[i];
}
for(i=j;i<=n;i++)
{
v[i]=nonprim[i-j+1];
}
//afisare elemente VECTOR sortat
printf("\nVectorul sortat este urmatorul:\n");
for(i=1;i<=n;i++)
{
printf("[%d]",v[i]);
}
return 0;
}

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