Informatică, întrebare adresată de sfetcuandrei2002, 9 ani în urmă

Fiind dat un șir de N numere întregi pozitive, să se afișeze pe ecran numerele șirului inițial, cu următoarele modificări:
Numerele pare se vor afla pe primele poziții din șir, în ordine crescătoare. Numerele impare se vor afla după numerele pare, în ordine descrescătoare (a numerelor nu a pozitiilor).
Date de intrare Se vor citi:
Un număr întreg N
Un șir de N numere întregi pozitive
Date de ieșire:
Pe ecran se va afișa șirul modificat.
Restricții N < 1000
Numerele din șir vor fi mai mici sau egale decât 1000 Exemplu
Date de intrare Date de ieșire
5
1 8 7 4 5 4 8 7 5 1
va rog urgent.

Răspunsuri la întrebare

Răspuns de radugiulia
1
#include <iostream>using namespace std;
int main(){    int a[1001],n,i,j,aux,nrpare=0;    cin>>n;    for(i=0;i<n;i++)    {          cin>>a[i];          if(a[i]%2==0)                nrpare++;    }
    for(i=0;i<n-1;i++)      for(j=i+1;j<n;j++)        if(a[j]%2==0 && a[i]%2==1)        {            aux=a[i];            a[i]=a[j];            a[j]=aux;        }    for(i=0;i<nrpare-1;i++)       for(j=i+1;j<nrpare;j++)        if(a[i] > a[j])    {            aux=a[i];            a[i]=a[j];            a[j]=aux;    }    for(i=nrpare;i<n-1;i++)       for(j=nrpare+1;j<n;j++)        if(a[j]>a[i])      {            aux=a[i];            a[i]=a[j];            a[j]=aux;      }    for(i=0;i<n;i++)        cout<<a[i]<<" ";    return 0;}

sfetcuandrei2002: iti multumesc
sfetcuandrei2002: e ok acum
radugiulia: Cu placere !
sfetcuandrei2002: insa acest cod cum as putea sa il modific ca sa faca acellasi lucru
sfetcuandrei2002: #include <iostream>
using namespace std;
int main()
//declar variabilele
{ int n,i,j,v[1000],aux,par=0;//citesc nr de pozitii ale sirului
cin>>n;
for(i=0;i<n;i++)
{cin>>v[i];//citesc sirul
if(v[i]%2==0)
par++;}//folosesc un contor"(par)"

for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(v[j]%2==0&&v[i]%2==1)
{aux=v[i];
v[i]=v[j];
v[j]=aux;}
for(i=0;i<par-1;i++)
for(j=i+1;j<par;j++)
if(v[i]>v[j])
{aux=v[i];
v[i]=v[j];
v[j]=aux;}
for(i=par;i<n-1;i++)
sfetcuandrei2002: for(j=par+1;j<n;j++)
if(v[j]>v[i])
{aux=v[i];
v[i]=v[j];
v[j]=aux;}
for(i=0;i<n;i++)
cout<<v[i]<<" ";//afisez sirul modificat
return 0;}
radugiulia: Pentru sortarea descrescatoare j-ul pleaca de la i+1 nu par +1.Deci asta e ultimul set de instructiuni inainte de afisare:
radugiulia: for(i=par; i<n-1; i++)
for(j=i+1; j<n; j++)
if(v[j]>v[i])
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
sfetcuandrei2002: multumesc
radugiulia: cu placere !
Alte întrebări interesante