"Se citește un vector din fișierul bac.txt, să se ordoneze crescător elementele pare din vector, rămânând pe pozițiile lor și descrescător elementele impare, rămânând pe locurile lor." Va rog să mă ajutați, am nevoie urgentă pentru ca primesc nota pe problemă!!

Răspuns :

Program C++

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("bac.txt");

int main(){

int n;

int i, j;

int v[100];

 

//Citire date

f>>n;

for(i=0;i<n;i++) f >> v[i];

 

//Sortare elemente algoritm, algoritm derivat selection sort

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

 for(j=i+1;j<n;j++){

  //Daca v[i] si v[j] au paritate diferita treci la elementul urmator

  if(v[i]%2!=v[j]%2) continue;

  //Daca numerele v[i],v[j] sunt pare sorteaza crescator

  if(v[i]%2==0 && v[j]<v[i])swap(v[i],v[j]);

  //Daca numerele v[i],v[j] sunt impare sorteaza descrescator

  if(v[i]%2==1 && v[j]>v[i])swap(v[i],v[j]);

 }

}

 

//Afiseaza vectorul sortat

for(i=0;i<n;i++) cout << v[i] << " ";

}

Vezi imaginea Andrei750238

#include<iostream>

#include<fstream>

using namespace std;

int main() {

   int v[100001], n = 0;

   ifstream f("bac.txt");

   while (f >> v[++n]);

   n--;

   cout << n << endl;

   int sem;

   do {

       sem = 1;

       for (int i = 1; i <= n - 1; i++)

           if (v[i] % 2 == 0)

               for (int j = i + 1; j <= n; j++)

                   if (v[j] % 2 == 0)

                       if (v[i] > v[j]) {

                           swap(v[i], v[j]);

                           sem = 0;

                       }

   } while (sem != 1);

   do {

       sem = 1;

       for (int i = 1; i <= n - 1; i++)

           if (v[i] % 2 == 1)

               for (int j = i + 1; j <= n; j++)

                   if (v[j] % 2 == 1)

                       if (v[i] > v[j]) {

                           swap(v[i], v[j]);

                           sem = 0;

                       }

   } while (sem != 1);

   for (int i = 1; i <= n; i++)

       cout << v[i] << ' ';

   return 0;

}