Cerinţa
Se dă un vector cu n
elemente numere întregi, n
fiind număr par. Să se ordoneze crescător elementele din prima jumătate a vectorului și descrescător elementele din a doua jumătate.
Se vor defini și apela următoarele subprograme:
citire
, care citește valoarea luin
și celen
elemente ale tablouluiafisare
, care afișează elementele tabloului, separate prin exact un spațiusortare
, care ordonează elementele vectorului cuprinse între doi indici transmiși ca parametru. Criteriul de ordonare (crescător/descrescător) va fi transmis ca parametru.
În programele C/C++ nu se vor folosi variabile globale.
Date de intrare
Fişierul de intrare halfsort1.in
conţine pe prima linie numărul n
si pe a doua linie n
numere întregi separate prin spaţii.
Date de ieşire
Fişierul de ieşire halfsort1.out
va conţine pe prima linie cele n
elemente ale vectorului, ordonate conform cerinței, separate printr-un spațiu.
Restricţii şi precizări
1 ≤ n ≤ 100
,n
număr par- valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât
1.000.000.000
Exemplu
halfsort1.in
6 8 2 9 4 5 7
halfsort1.out
2 8 9 7 5 4
#include <bits/stdc++.h> using namespace std; ifstream cin("halfsort1.in"); ofstream cout("halfsort1.out"); void citire(int& n, int a[]){ cin >> n; for(int i = 1; i <= n; ++i) cin >> a[i]; } void sortare(int n, int a[], int st, int dr, char ch){ if(ch == 'c'){ for(int i = st; i < dr; ++i) for(int j = i + 1; j <= dr; ++j) if(a[i] > a[j]) swap(a[i], a[j]); } else{ for(int i = st; i < dr; ++i) for(int j = i + 1; j <= dr; ++j) if(a[i] < a[j]) swap(a[i], a[j]); } } void afisare(int n, int a[]){ for(int i = 1; i <= n; ++i) cout << a[i] << ' '; } int main(){ int n, a[101]; citire(n, a); sortare(n, a, 1, n / 2, 'c'); sortare(n, a, n / 2 + 1, n, 'd'); afisare(n, a); return 0; }