我想将向量“追加”到矩阵,例如
[1 2; & (5 [1 2 5;
3 4] 6) --> 3 4 6];
试图模拟数学脚本。我似乎不了解C中的数组和指针,因为当我尝试在C中使用以下代码时,
编辑:张贴混乱的代码是多余的。使用功能mmerge时,“问题”仍然存在。
#include <stdio.h>
//void printMatrix(const int N, const int M, double A[N][M]);
void mmerge(const int N, const double A[N][N], const double b[N], double F[N][N])
{
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
F[i][j] = A[i][j];
}
F[i][N] = b[i];
}
}
// Prints a two-dimensional array as a matrix
void printMatrix(const int N, const int M, double A[N][M]){
int i, j;
for(i=0; i<N; ++i){
printf("|");
for(j=0; j<M; ++j){
printf(" % 8.4f", A[i][j]);
if(j != M-1) printf(",");
}
printf(" |\n");
}
printf("\n");
}
int main()
{
const int N=2;
double A[2][2] = {{1,2},{3,4}};
double b[2] = {5,6};
double F[2][3];
mmerge(2,A,b,F);
printMatrix(2, 3, F);
return 0;
}
我懂了
| 1.0000, 2.0000, 3.0000 |
| 4.0000, 6.0000, 0.0000 |
会发生什么,为什么不是预期的结果?
最佳答案
忘记了N+1
我想将向量“追加”到矩阵,例如
[1 2; & (5 [1 2 5;
3 4] 6) --> 3 4 6];
试图模拟数学脚本。我似乎不了解C中的数组和指针,因为当我尝试在C中使用以下代码时,
编辑:张贴混乱的代码是多余的。使用功能mmerge时,“问题”仍然存在。
#include <stdio.h>
//void printMatrix(const int N, const int M, double A[N][M]);
void mmerge(const int N, const double A[N][N], const double b[N], double F[N][N]+1)
{
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
F[i][j] = A[i][j];
}
F[i][N] = b[i];
}
}
// Prints a two-dimensional array as a matrix
void printMatrix(const int N, const int M, double A[N][M]){
int i, j;
for(i=0; i<N; ++i){
printf("|");
for(j=0; j<M; ++j){
printf(" % 8.4f", A[i][j]);
if(j != M-1) printf(",");
}
printf(" |\n");
}
printf("\n");
}
int main()
{
const int N=2;
double A[2][2] = {{1,2},{3,4}};
double b[2] = {5,6};
double F[2][3];
mmerge(2,A,b,F);
printMatrix(2, 3, F);
return 0;
}
关于c - 在C中合并多维数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53347264/