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
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema HalfSort1:
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("halfsort1.in");
ofstream fout("halfsort1.out");
void citire(int a[], int &n);
void afisare(int a[], int n);
void sortare(int a[], int st , int dr , int criteriu);
int main()
{
int n , v[1005];
citire(v , n);
sortare(v , 0 , n/2 , 0);
sortare(v , n/2 , n , 1);
afisare(v , n);
return 0;
}
void citire(int a[] , int & n)
{
fin >> n;
for(int i = 0 ; i < n ; i ++)
fin >> a[i];
}
void afisare(int a[], int n)
{
for(int i = 0 ; i < n ; i ++)
fout << a[i] << " ";
}
void sortare(int a[], int st , int dr , int criteriu)
{
//criteriu == 1 -> ordonare descrescatoare
//criteriu != 1 -> ordonare crescatoare
int semn = 1;
if(criteriu == 1)
semn = -1;
for(int i = st ; i < dr -1 ; i ++)
for(int j = i + 1 ; j < dr ; j ++)
if(semn * a[i] > semn * a[j])
{
int aux = a[i];
a[i] = a[j];
a[j] = aux;
}
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #914 HalfSort1
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #914 HalfSort1 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!