Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Co robi pętla while (true)

Ostatnio zmodyfikowano 2014-02-13 19:36
Autor Wiadomość
mmatkowski1
Temat założony przez niniejszego użytkownika
[C++] Co robi pętla while (true)
» 2014-02-13 15:32:04
Witam. Mam pytanie co robi w poniższym kodzie w/w pętla?

Kod funkcji

C/C++
void permutacja( string a )
{
    int x = a.length();
    int y, z; // indeksy znakow ktore bede zamieniac ze soba miejscami
    while( true ) {
        cout << a << endl; //- zapis do konsoli
        y = x - 1; // Od końca słowa idąc w lewo:
        // znajduje taki znak ze poprzednik jest od niego mniejszy:
        while( y > 0 && a[ y - 1 ] >= a[ y ] ) y--; // dopóki poprzedni znak jest wiekszy/rowny biezacemu to idź w lewo
       
        if( y == 0 ) break; // jeżeli nie na już znaków które można przestawić, to koniec
       
        // będę przestawiać POPRZEDNIKA największego znaku: a[i-1]
        // zamienię go z NAJMNIEJSZYM znakiem większym od niego,
        // który stoi z jego prawej strony
        z = y;
        while( z < x && a[ z ] > a[ y - 1 ] ) z++; // szukam NAJMNIEJSZEGO znaku WIEKSZEGO od a[i-1]
       
        z--;
        swap( a[ y - 1 ], a[ z ] ); // zamieniam znaki miejscami
        reverse( a.begin() + y, a.end() ); // przywracam porządek na prawo od i
    }
}
P-104592
alixir
» 2014-02-13 16:00:22
Najprościej mówiąc, działa dopóki y!=0
P-104596
DejaVu
» 2014-02-13 16:25:04
@up: Oszczędnie gospodarujesz prawdą :) Najprościej mówiąc jest to pętla nieskończona, która będzie się wykonywała tak długo, aż nie zostanie przerwana przez jakąś instrukcję (w Twoim przypadku przez słowo kluczowe break).
P-104599
mmatkowski1
Temat założony przez niniejszego użytkownika
» 2014-02-13 19:36:46
Dziękuje bardzo za pomoc. Temat uważam za zamknięty
P-104611
« 1 »
  Strona 1 z 1