Problem z pętlą while (sortowanie bąbelkowe)

0

Problem raczej banalny, jednak półgodzinne wpatrywanie się w kod nie przyniosło skutku.

 
    #include <iostream>
    #include <conio.h>
    using namespace std;
    int main()
    {
    //             [0] [1] [2] [3] [4] [5]
    int tab[]={     5,  6,  4,  2,  1,  3},bufor;
    bool spr[]={    0,  0,  0,  0,  0};

    do
    {
        for (int i=0; i<=4; i++)
        {
            if (tab[i]>tab[i+1])
            {
                spr[i]=0;
                bufor=tab[i];
                tab[i]=tab[i+1];
                tab[i+1]=bufor;
            }   
            else if (tab[i]<tab[i+1])
            {
                spr[i]=1;
            }
        }
    }while((spr[0]=0)||(spr[1]=0)||(spr[2]=0)||(spr[3]=0)||(spr[4]=0));

    for (int i=0; i<=5; i++)
    {
        cout<<tab[i];
    }

    cout<<endl<<endl;
    system ("PAUSE");
    return EXIT_SUCCESS;   
    }

Tablica spr (bool) spełnia funkcję sprawdzającą czy szereg liczb jest już uporządkowany - i jeśli nie, nakazuje powtórzenie cyklu. Niestety, za każdym razem wykonuje się tylko jeden cykl sortowania mimo że warunek kontynuowania pętli jest spełniony. Dla sprawdzenia zastosowałem "ręczne" wykonanie cyklu 10 razy, aby sprawdzić czy dobrze zapisałem całe sortowanie i wszystko było OK. Z góry dziękuję za pomoc.

0

używaj true i false jako wartości typu bool, a nie 0 i 1.

0

Z tego co widze warunek pętli jest spełniony bo przypisujesz raz wartość do zmiennej czyli wykona się tylko raz.
'==' to dwuargumentowy op porównania: daje wartosc true jesli wyrażenie z lewej strony op'a jest równe wartości z prawej strony.

1 użytkowników online, w tym zalogowanych: 0, gości: 1