Zamiana pętli for na while w C++.

0

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;
}

4

Gdzie jest odpowiednik int i = 0 w pętli while?

0

Sprawdz sobie link w mojej stopce. Rozdzial
4.4.2 Wyjaśnienie pojęcia pętli

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