Informatică, întrebare adresată de igugleep8the3, 8 ani în urmă

HalfSort
Se dă un vector cu n elemente numere întregi, n fiind număr par.

Cerinţa
Să se ordoneze crescător elementele din prima jumătate a vectorului și descrescător elementele din a doua jumătate.

Date de intrare
Fişierul de intrare halfsort.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 halfsort.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
halfsort.in

6
8 2 9 4 5 7
halfsort.out

2 8 9 7 5 4
Iau doar 80 de puncte cu codul acesta :

#include
using namespace std;
ifstream cin("halfsort.in");
ofstream cout("halfsort.out");
int v[1001],n;
int main()
{ cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i];
for(int i=1;i<=n/2;i++)
for(int j=i+1;j<=n/2;j++)
if(v[i]>v[j])
{ int aux=v[i]; v[i]=v[j]; v[j]=aux;}
for(int i=n/2;i<=n;i++)
for(int j=i+1;j<=n;j++)
if(v[i] { int aux=v[i]; v[i]=v[j]; v[j]=aux;}
for(int i=1;i<=n;i++)
cout< return 0;
}


boiustef: for(int i=1;i <= n/2;i++)
for(int j=i+1;j <= n/2;j++)
if(v[i]>v[j])
{ int aux=v[i]; v[i]=v[j]; v[j]=aux;}
CRED AI EROARE LA VALOAREA FINALA A LUI i, tr sa fie
for(int i=1;i < n/2;i++)
boiustef: La fel si pentru a doua jumatate...
boiustef: Intradevar la prima jumatate nu se produce eroare, dar la a doua jumatate
for(int i=n/2;i <= n;i++)
for(int j=i+1;j<=n;j++)
if(v[i] { int aux=v[i]; v[i]=v[j]; v[j]=aux;}
valoarea lui i nu trebuie sa inceapa de la n/2+1 ????

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("halfsort.in");

ofstream g("halfsort.out");

int v[101], n, mij, i, j;

int main()

{

  f >> n;

  for (i=1; i<=n; ++i)

     f >> v[i];

  mij=n/2;

  for (i=1; i<mij; ++i)

   for (j=i+1; j<=mij; ++j)

       if (v[j]<v[i]) swap(v[i], v[j]);

  for (i=mij+1; i<n; ++i)

    for (j=i+1; j<=n; ++j)

       if (v[j]>v[i]) swap(v[i], v[j]);

  for (i=1; i<=n; ++i)

   g << v[i] << " ";

}

Explicație:

asta e varianta mea cu 100..


igugleep8the3: Mersi . Ai si halfSort2?
boiustef: nu, dar se poate incerca...
boiustef: este si halfSort2
Alte întrebări interesante