Sortowanie liczb

Witam. Napisałem krótki program, który ma sortować liczby w kolejności rosnącej. Niestety, układa dobrze tylko 3 ostatnie liczby, pierwsza jest zawsze nieprawidłowa. (używam Deva)

#include

#include

using namespace std;

int i=0;

int main()

{

int a[4], razy=0;

cout <<" Podaj 4 liczby \n";

cin >> a[0] >> a[1] >> a[2] >> a[3];

for (i=0;i<=3;++i)

{

if (a_>a[i+1])_

{

int p=a[i+1];

a[i+1]=a_;_

a_=p;_

i=0;

}

};

for (int x=0;x<=3;++x) cout << a[x];

getch();

}

Przy takim sortowaniu musisz sprawdzać czy następny element tablicy jest większy od bieżącego. Jeśli jest, to trzeba zamienić liczby pozycjami, a następnie za pomocą drugiej pętli sprawdzić pozostałe elementy. Całość może wyglądać mniej więcej tak:

int tmp, n = 4;


    for (int i = 0; i < n; i++)

    {

        for (int j = 0; j < n - 1; j++)

        {

            if (tab[j] > tab[j+1])

            {

                tmp = tab[j];

                tab[j] = tab[j+1];

                tab[j+1] = tmp;

            }

        }

    }

I staraj się formatować kod.

Gdy i przyjmie wartość 3 to i + 1 będzie wynosiło 4 :wink: więc wyjeżdżasz za tablicę.

Dev jest od dawna nierozwijany i ma przestarzałą wersję kompilatora gcc (MinGW), lepiej ściągnij sobie Code::Blocksa z najnowszym MinGWem :idea:

Do wklejania kodu używaj znaczników code.

Polecam też dobry kurs C++ i ogólnie programowania: http://xion.org.pl/productions/texts/coding/megatutorial/ :smiley:

Dzięki Panowie.