Informatică, întrebare adresată de dianacoldea, 8 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 a pozițiilor în șirul inițial.
-Numerele impare se vor afla după numerele pare, în ordine descrescătoare a pozițiilor în șirul inițial.
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: 5
1 8 7 4 5
Date de iesire: 8 4 5 7 1
rezolvare in C++ URGENT


Răspunsuri la întrebare

Răspuns de NuPotSaStiuTot
0
#include <iostream>
using namespace std;
int main(){
    int n, sirIn[1001], Result[1001], NrPar=0, NrImpar=0; 
   cin >> n;
    for (int i=1;i<=n;i++) cin  >> sirIn[i];
    for (int i=1;i<=n;i++){ 
       if (sirIn[i]%2 == 0){
            NrPar++; 
           int Destin=NrPar;
            for (int j=NrPar-1; j>0; j--) {
                if (Result[j] > sirIn[i]){
                    Result[j+1] = Result[j];
                      Destin=j; 
               } else { 
                   Destin=j+1; 
                   break;
                } 
           }
            Result[Destin]=sirIn[i]; 
       }
    } 

    for (int i=1;i<=n;i++){ 
       if (sirIn[i]%2 != 0){ 
           NrImpar++;
            int Destin=NrPar+NrImpar;
            for (int j=NrPar+NrImpar-1; j>NrPar; j--) {
                if (Result[j] > sirIn[i]){
                    Result[j+1] = Result[j]; 
                    Destin=j;
                } else {
                    Destin=j+1;
                    break; 
               } 
           } 
           Result[Destin]=sirIn[i];
        }
    }
for (int i=1;i<=NrPar+NrImpar; i++) cout << Result[i];
return 0;
}

NuPotSaStiuTot: gresit: par nu sunt invers: schimb > in < in 1° parte
Alte întrebări interesante