Răspuns :
► Varianta lunga :
#include <iostream>
using namespace std;
//Aranjare folosind bubblesort, comparare modificata, prima data elementele negative
void aranjare(double a[], int n) {
bool nesortat = 1;
while (nesortat) {
nesortat = 0;
for (int i = 0; i < n - 1; i++) {
//Daca primul element are semn +/0 (sau +) iar al doilea element are semn - (sau -/0) atunci interschimba
if (a[i] >= 0 && a[i + 1] < 0 || a[i]>0 && a[i + 1] <= 0) {
swap(a[i], a[i + 1]);
nesortat = 1;
}
}
}
}
int main() {
double a[100];
int n;
//Citire date
cout << "Introduceti numar elemente : ";
cin >> n;
cout << "Introduceti elemente : ";
for (int i = 0; i < n; i++) cin >> a[i];
//Aranjare negative->pozitive
aranjare(a, n);
//Intoarcere vector, aranjare pozitive->negative
for (int i = 0; i < n / 2; i++)
swap(a[i], a[n - i - 1]);
//Afisare solutie
cout << "Elemente aranjate : ";
for (int i = 0; i < n; i++) cout << a[i] << " ";
}
► Varianta scurta, practica
#include <iostream>
#include <algorithm>
using namespace std;
//Functie comparare
bool comp_less(double a, double b) {
if (a < 0 && b >= 0 || a <= 0 && b>0) return 1;
return 0;
}
//Functie aranjare elemente de la negative la pozitive
void aranjare(double a[], int n) {
sort(a, a + n, comp_less);
}
int main() {
double a[100];
int n;
//Citire date
cout << "Introduceti numar elemente : ";
cin >> n;
cout << "Introduceti elemente : ";
for (int i = 0; i < n; i++) cin >> a[i];
//Aranjare negative->pozitive
aranjare(a, n);
//Intoarcere vector, aranjare pozitive->negative
reverse(a, a + n);
//Afisare solutie
cout << "Elemente aranjate : ";
for (int i = 0; i < n; i++) cout << a[i] << " ";
}
► De retinut :
Putem folosi orice algoritm de sortare dorim pentru a aranja elementele intr-o anumita ordine cat timp modificam comparatorul/conditia de interschimbare/aranjare a elementelor.
Functia sort din algorithm primeste o functie de comparare care e folosita in locul operatorului "<". Aceasta functie de comparare are doi parametri (a si b) si returneaza 1 daca a este inaintea lui b sau 0 altfel.
Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!