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