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 celenelemente 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,nnumă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!