ОБНОВЛЕНИЕ
Предположим, что ваш вопрос касается диагонализации матрицы (как Юджин утверждает в разделе комментариев):
В дополнение к тому, на что указал Юннош, диагонализация матрицы означает, что матрица должнабыть квадратом n x n
.Однако в main
вы инициализируете его как матрицу 3 x 4
.
Оригинальный код
float** Matriz = new float* [3];
for(int i = 0; i < 3 ; i++)
Matriz[i] = new float [4];
Чтобы избавиться от ошибки сегмента, измените следующую часть в main (установите матрицу на 3 x 3
):
float** Matriz = new float* [3];
for(int i = 0; i < 3 ; i++)
Matriz[i] = new float [3];
//test matrix
Matriz[0][0] = 1;
Matriz[0][1] = 4;
Matriz[0][2] = 52;
Matriz[1][0] = -27;
Matriz[1][1] = -110;
Matriz[1][2] = -3;
Matriz[2][0] = 22;
Matriz[2][1] = 2;
Matriz[2][2] = 14;
Наконец,чтобы получить следующую матрицу (нижняя треугольная):
1 0 0
4 5 0
7 8 9
Удалите знак равенства из вашего третьего вложенного цикла:
for(int j = n; j > i; j--)
Я предполагаю, что отсюда вы можете пройти через это, чтобы сделать это upper-triangular matrix
.
СТАРЫЙ ОТВЕТ
Попробуйте это:
int matrix[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
int row = 3;
int col = 3;
int i, j;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
if (i > j) {
cout << "0" << " ";
} else
cout << matrix[i][j] << " ";
}
cout << endl;
}
Даст вам эту матрицу
1 2 3
0 5 6
0 0 9