Witam!
Napisałem prosty program sortujący pięcioelementową tabelkę int (sortowanie bąbelkowe). W wymaganiach jest, aby używać wyłącznie pętli while, dlatego zamieniłem wcześniejszą wersje z for na while i nie wiem dlaczego program przestał sortować poprawnie. Patrzę na to już ponad 30 minut i mimo trywialności programu nie mogę dostrzec żadnego błędu w zamianie. Czy ktoś mógłby mi wyjaśnić dlaczego wersja z while nie działa? (operatory preprocesora wykorzystałem, żeby szybciej przełączać pomiędzy dwoma wersjami pętli gdy przy define stoi 1 wykonuje się for, gdy 0 while)
#include <iostream>
#define BETA 0
using namespace std;
int main()
{
const int rozmiar=5;
int A[rozmiar]={3,5,6,2,1}, n=rozmiar, b, i=0;
while (n>0)
{
#if BETA
while (i < n-1)
{
if(A[i]>A[i+1])
{
b=A[i+1];
A[i+1]=A[i];
A[i]=b;
}
i++;
}
n=n-1;
#else
for (int i = 0; i < n-1; i++)
{
if(A[i]>A[i+1])
{
b=A[i+1];
A[i+1]=A[i];
A[i]=b;
}
}
n=n-1;
#endif
}
for (i=0; i<rozmiar; i++)
{
cout<<A[i]<<endl;
}
return 0;
}