我必须在C中编写一个函数,它接受一个矩阵(src)和两个整数值(x,y),然后给出一个包含src x y次的矩阵。 例如
${BOOST_ROOT}/stage
与(2,3)将是
3 5
2 1
我得到了结构
3 5 3 5
2 1 2 1
3 5 3 5
2 1 2 1
3 5 3 5
2 1 2 1
并写了这个函数:
struct Mat {
int cols; // number of columns
int rows; // number of rows
int** row_ptrs; // pointer to rows (the actual matrix)
} Mat;
然后我给了一些测试程序:其中一半工作正常,另一个很难给我分段测试。我确信测试是正确的,所以我的程序一定有问题。你能帮我找到吗?
答案 0 :(得分:4)
循环中的条件
for(int i = 0; i < newMat->cols; i++)
^^^^^^^^^^^
newMat->row_ptrs[i] = calloc(newMat->cols, sizeof(int));
错了。必须有
for(int i = 0; i < newMat->rows; i++)
^^^^^^^^^^^
newMat->row_ptrs[i] = calloc(newMat->cols, sizeof(int));
注意:我认为你的意思是
typedef struct Mat {
^^^^^^^
int cols; // number of columns
int rows; // number of rows
int** row_ptrs; // pointer to rows (the actual matrix)
} Mat;