現在、私は学校(行列乗算器)プロジェクトに取り組んでおり、問題があります。 は2次元配列を割り当てることができませんC
は、私は2次元配列の行列をreprensent、私はそれをこのように割り当てる:typedef struct matrix
{
int** matrix;
unsigned int l;
unsigned int c;
} matrix;
int matrix_alloc(matrix** matr, unsigned int l, unsigned int c)
{
unsigned int i, j;
*matr = malloc(sizeof(matrix)); /* Allocate memory for the structure */
if (*matr == NULL) /* Check if malloc succeeded */
{
fprintf(stderr, "malloc error"); /* If not print error */
return -1;
}
(*matr)->matrix = malloc(l*sizeof(int*)); /* Allocate memory for columns of the matrix*/
if ((*matr)->matrix == NULL)
{
fprintf(stderr, "malloc error");
free(*matr);
return -1;
}
for (i = 0; i < l; i++)
{
(*matr)->matrix[i] = malloc(c*sizeof(int));
if ((*matr)->matrix[i] == NULL)
{
fprintf(stderr, "malloc error");
for (j = 0; j < i; j++)
{
free((*matr)->matrix[j]);
}
free(*matr);
return -1;
}
for (j = 0; j < c; j++)
{
(*matr)->matrix[i][j] = 2; // Matrix should be filled with 2 for tests
printf("Element added : %d\n", (*matr)->matrix[i][j]);
}
}
(*matr)->l = l;
(*matr)->c = c;
printf("will print matrix----------------------\n");
matrix_print(*matr);
return 0;
}
をそして、これは私が行列を印刷する方法である
void matrix_print(matrix* m)
{
unsigned int i, j;
int v;
printf("********************************************************************************\n");
printf("Lines:\t %i\n", m->l);
printf("Cols:\t %i\n", m->c);
printf("Matrix::\n");
for (i = 0; i < m->l; i++)
{
for (j = 0; j < m->c; j++)
{
matrix_get_elem_at(v, i, j, m);
printf("\t%d", v);
/*printf("\t%ld", mpz_get_si(v)); */
}
printf("\n");
}
printf("********************************************************************************\n");
}
私は
matrix* matr;
/* alloc matrix */
assert(matrix_alloc(&matr, 10, 10) == 0);
printf("----------------------------will print test matrix\n");
matrix_print(matr);
私のマトリックスは2の代わりに32767で埋められます
誰かがこのバグを取り除く手伝いをしてくれますか?それは、最初のパラメータのint*
を取得する必要があります -
は、あなたが私たちに多くのコードが表示されるはずです(?たとえば、どのようにあなたがtypedef matrix
を宣言しなかった)しかし、私は問題はmatrix_get_elem_at
であることを賭ける
ベン
私は行列構造体を追加しました。 –
OK。 'matrix_get_elem_at'はどうでしょうか? (私は正しいのですか?) – asaelr
はい私はあなたが正しいと思います。私はintではなくintを与えるべきです。 ありがとうございます! –