Pętla "for"

0

Mam pewien problem a mianowicie nie wiem czemu pewna pętla wykonuje się prawidłowo:

     for(int i=n-1;i>=0;i--)
{
    c=A[i][n];
        for(int k=n-1;k>=i+1;k--)
        {
       c=c-A[i][k]*x[k];

        }
        x[i]=c/(A[i][i]);
}

a dokładniej chodzi mi o tą drugą

for(int k=n-1;k>=i+1;k--) 

Mam zdefiniowane n=3 więc dla pierwszego przejścia k=n-1=3-1=2 i ma dążyć do k>=i+1 gdzie i=n-1=2 więc ma dążyć do 3 przy czym k się zmniejsza o 1 co przejście.
Pętle się wykonuje prawidłowo ale jak to? Kiedy niby 2 będzie >= 3 przy tym, że k sie zmiejsza? Dodam, że robię program który wykonuje eliminację Gaussa i wyniki pokazuje prawidłowe.

3

Może to Ci coś wyjaśni: http://melpon.org/wandbox/permlink/Qq41DTKDhuiz3PUh

i przyjmuje wartości 2,1,0.
Dla 2: k nie przyjmuje żadnych.
Dla 1: k przyjmuje 2
Dla 0: k przyjmuje 2, 1.

3

Myślę, że mniej czasu i wysiłku niż opisanie całego problemu zajmuje dopisanie dwóch linijek:

cout << "i = " << i << ", n = " << n << endl;

w zewnętrznej pętli, oraz

cout << "k = " << k << endl;

w wewnętrznej pętli.

Że już o debuggerze nie wspomnę.

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