Как я могу добавить диагональный элемент в n * n динамически распределенной матрице? - PullRequest
0 голосов
/ 11 февраля 2019

если матрица размещена следующим образом

int **A, n;
A = (int **)malloc(n * sizeof(int));  
for (i = 0; i < n; i++) {
    A[i] = malloc(n * sizeof(int));
}

Выше описано, как вставить элемент в матрицу, а также как добавить диагональные элементы.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Я думаю, следует использовать версию calloc, которая инициализирует элементы равными 0, а затем добавить диагональные элементы. Вот мое решение:

int **A,n;
A=(int **)calloc(sizeof(int*), n);  
for(i=0;i<n;i++){
     A[i]=calloc(sizeof(int), n);
}

// Add diagonal elements
for(i=0;i<n;i++){
    A[i][i] = 1; 
}
0 голосов
/ 11 февраля 2019

Во-первых, вам нужно выделить место для n целых указателей здесь:

int **A,n;
A=(int **)malloc(n*sizeof(int *));  

Подсказка: обычно тип переменной, которой вы назначаете свое выделение, является типом указателядля объекта, который вы указываете в sizeof()

Здесь ваши типы верны:

for(i=0;i<n;i++){
     A[i]=malloc(n*sizeof(int));
}

Теперь вы можете назначать свои элементы следующим образом:

A[x][y] = val;

с помощью0 <= x, y <n </p>

Следовательно, диагональные элементы A[i][i] с 0 <= i <n. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...