Informatică, întrebare adresată de VladRaul23, 8 ani în urmă

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ăspunsuri la întrebare

Răspuns de howardax
1

#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;

}

Alte întrebări interesante