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

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

Răspuns de andrei750238
4

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] << " ";

}

Anexe:

lucaciucandrei: am fost si eu plecat si rpd ai pus tu solutia :))
andreidima67: Mulțumesc din suflet!!
Răspuns de lucaciucandrei
2

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

}

Alte întrebări interesante