Se considera un fisier text in care pe prima linie avem un numar natural n (1<=n<=100) iar pe a
doua linie n valori naturale cu cel mult 9 cifre, separate printr-un spatiu. Sa se ordoneze vectorul
astfel incat pe primele pozitii se vor afla elementele pare in ordine crescatoare iar la finalul
vectorului elementele impare in ordine descrescatoare.De ex. daca in fisierul pr10.in este
urmatorul continut :
7
2 33 1 4 5 3 12
Se va afisa pe ecran:
2 4 12 33 5 3 1

Răspuns :

#include <iostream>

#include <bits/stdc++.h>

#include <fstream>

#include <string>

using namespace std;

int main()

{

    int k=0, n, j, aux;

   string line, numere;

   ifstream fileIn("pr10.in");

   if (fileIn.is_open())

 {

   while ( getline (fileIn, line) )

   {

      if(k!=1){

       n=stoi(line);

       k++;

     } else {

        numere=line;

     }

   }

     

 }

   int sirNr[n];

   

   

   istringstream ss(numere);

   int i=0;

 

   do {

       

       string number;

       ss>>number;

       if(number!="" && number!=" "){

           sirNr[i]=stoi(number);

           i++;

       }

       

   } while (ss);

   

   fileIn.close();

   

   k=0;

   for(i=0; i<n; i++){

       if(sirNr[i]%2==0){

           aux=sirNr[i];

           sirNr[i]=sirNr[k];

           sirNr[k]=aux;

           k++;

       }

   }

   

   for(i=0; i<n; i++){

       for(j=0; j<n; j++){

           if(sirNr[i]%2==0 && sirNr[j]%2==0 && sirNr[i]<sirNr[j]){

               aux=sirNr[i];

               sirNr[i]=sirNr[j];

               sirNr[j]=aux;

           }

            if(sirNr[i]%2!=0 && sirNr[j]%2!=0 && sirNr[i]>sirNr[j]){

               aux=sirNr[i];

               sirNr[i]=sirNr[j];

               sirNr[j]=aux;

           }

       }

 }

   for(i=0; i<n; i++){

       cout<<sirNr[i]<<" ";

   }

   return 0;

}