[C++] Zerowanie elementów ponad przekątną, nie działa tak jak powinno

0

Treść zadania: Napisz program implementujący algorytm zerowania elementów ponad przekątną macierzy n x n.

 #include <cstdlib>
#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])
{
    int n,m;
    int **macierz;
    cout << "Podaj liczbe kolumn oraz wierszy: ";
    cin >> n;
    macierz = new int*[n];
    for(int i=0; i<n; i++)
    {
            macierz[i]=new int[n];
    }       
    for(int i=0; i<n; i++)
    {
            for(int j=0; j<n; j++)
            {
            cout << "Podaj wartosc kolumny " << i+1 << " i wiersza " << j+1 << " : ";
            cin >> macierz[i][j];
    }
    }
    
    
    for(int i=0; i<n; i++)
    {          
            for(int j=0; j<n; j++)
            {
            for(int b=1; b<n; b++)
            {
            if (i==(n-b))
            macierz[i][j+b]=0;
            }
            }         
    }
    
    
    
    for(int i=0; i<n; i++)
    {
            cout << "\n";
            for(int j=0; j<n; j++)
            {
            cout << macierz[i][j] << " ";
            }
    }
    
    cout <<"\n";     
    system("PAUSE");
    return 0;
}

Program działa poprawnie dla n=2, n=3, jednak coraz wyższe liczby tym coś jest nie tak...
dla n=4 macierz wygląda tak:
1 2 3 4
1 2 3 0
0 2 0 0
1 0 0 0
nie mam pojęcia skąd się bierze 0 w pierwszej kolumnie... dla n=5,6 itd coraz więcej pojawia się 0 nie wiadomo skąd

0
for (int i = 0; i < n; ++i)
{
    for (int j = i + 1; j < n ; ++j)
    {
         a[i][j] = 0;
    }
}
 
0

dzięki ja się wysilam a rozwiązanie proste...

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