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 vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Dacă aveți întrebări sau nevoie de asistență suplimentară, nu ezitați să ne contactați. Ne vedem curând și nu uitați să ne adăugați la marcaje!