Informatică, întrebare adresată de Utilizator anonim, 9 ani în urmă

Ajutor!
Realizati un program c++.

Se dă un vector cu n elemente, numere naturale distincte. Ordonați crescător elementele situate înaintea valorii maxime din vector și descrescător elementele situate după această valoare.Programul citește de la tastatură numerele n, iar apoi n numere naturale, reprezentând elementele vectorului.Programul va afișa pe ecran elementele vectorului, separate prin exact un spațiu, după efectuarea operațiilor cerute.
Restricții și precizări
1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 1.000.000.000

Răspunsuri la întrebare

Răspuns de CRG
11
#include <iostream>

using namespace std;

bool comparare(int a, int b, int crescator)
{
    if (crescator == 1)
        return a > b;
    return a < b;
}

void ordonare(int sir[], int indice_inceput, int indice_sfarsit, int crescator)
{
    for (int i = indice_inceput; i < indice_sfarsit; i++)
    {
        for (int j = i + 1; j <= indice_sfarsit; j++)
        {
            if (comparare(sir[i], sir[j], crescator))
            {
                int aux = sir[i];
                sir[i] = sir[j];
                sir[j] = aux;
            }
        }
    }
}

int main()
{
    int nr_elem, indice_elem_maxim, sir[1001], elem_maxim;
    cout << "n=";
    cin >> nr_elem;
    cout << "Introduceti cele " << nr_elem << " elemente:" << endl;

    cin >> sir[1];
    elem_maxim = sir[1];
    indice_elem_maxim = 1;

    for (int i = 2; i <= nr_elem; i++)
    {
        cin >> sir[i];
        if (sir[i] > elem_maxim)
        {
            indice_elem_maxim = i;
            elem_maxim = sir[i];
        }
    }

    ordonare(sir, 1, indice_elem_maxim - 1, 1);
    ordonare(sir, indice_elem_maxim + 1, nr_elem, 0);

    for (int i = 1; i <= nr_elem; i++)
        cout << sir[i] << " ";

    return 0;
}


Alte întrebări interesante