我正在学习C。我有一个程序,可以动态创建和填充两个矩阵X和Y,使用随机数使用rand(),如下所示
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main(){
int i, j, k, m, n;
double **x;
double **y;
printf("Enter a number as the size of two square matrices\n");
scanf("%d", &m);
x = (double**)malloc(m * sizeof(double));
y = (double**)malloc(m * sizeof(double));
/* initialize random seed: */
srand(time(NULL));
for(i = 0; i < m; i++) {
x[i] = (double*)malloc(m * sizeof(double));
y[i] = (double*)malloc(m * sizeof(double));
for(i = 0; i < m; i++) {
for(j = 0; j < m; j++) {
x[i][j] = rand();
y[i][j] = rand();
}
printf("\n");
}
}
printf("\n\n");
}
当我运行这个程序并给出2作为我的矩阵的大小时,我看到“分离故障”是错误。请注意,我们的想法是用双精度类型的随机元素填充两个矩阵。如果上面的代码是正确的,请告诉我。
更正:编辑1
x = (double**)malloc(m * sizeof(double*));
y = (double**)malloc(m * sizeof(double*));
/* initialize random seed: */
srand(time(NULL));
for(i = 0; i < m; i++) {
x[i] = (double*)malloc(m * sizeof(double));
y[i] = (double*)malloc(m * sizeof(double));
for(j = 0; j < m; j++) {
x[i][j] = rand();
y[i][j] = rand();
}
printf("\n");
}
printf("\n\n");
}
以上功能现在正常工作。需要解释x=(double**)malloc(m*sizeof(double*));并且x[i]=(double*)malloc(m*sizeof(double));
为什么*用于x=(双**)malloc(m*sizeof(双*))中的sizeof(双*);
编辑2
void main(){
int i, j, k, m, n;
printf("Enter a number as the size of two square matrices\n");
scanf("%d", &m);
double (*x)[m] = malloc(sizeof(double[m][m]));
double (*y)[m] = malloc(sizeof(double[m][m]));
/* initialize random seed: */
srand(time(NULL));
for(i = 0; i < m; i++) {
for(j = 0; j < m; j++) {
x[i][j] = rand();
y[i][j] = rand();
}
printf("\n");
}
printf("\n\n");
}
根据Jens Gustedt矩阵分配更改…我已删除
double **x;
double **y;
x = (double**)malloc(m * sizeof(double*));
y = (double**)malloc(m * sizeof(double*));
x[i] = (double*)malloc(m * sizeof(double));
y[i] = (double*)malloc(m * sizeof(double));
这些只是假的矩阵,这项技术属于博物馆。在现代C语言中,从C99开始,只需将2D矩阵分配为double(*matrix)[m]=malloc(sizeof(double[m][m])
。因此,只需对整个矩阵调用一次
malloc
,就可以将其全部存储在连续内存中
–Jens Gustedt
是否可以将范围分配给矩阵。如果将以下零矩阵视为绘图的“网格”: 你能把这个矩阵当作一个网格,这样每个x轴的零点都可以看作一个范围吗?例如,是一个范围是一个范围等。 范围思想也可以应用于列吗? 这样做的目的是,我可以读取单元阵列数据,我已经组织到零矩阵的范围,以产生一个二维直方图。
我在查看一些代码时发现了以下内容: 有什么区别呢?顺便说一句:我对矩阵很陌生
我有一个家庭作业,要求我用用户输入生成一个n×n矩阵。我试过几种解决办法,但似乎都不管用。我想对你们中的许多人来说,这是一个相对简单的任务。 这是分配文本:编写一个方法,使用以下签名显示一个n×n矩阵:public static void printMatrix(int n)每个元素都是0或1,这是随机生成的。编写一个测试程序,提示用户输入n,并显示n×n矩阵。 我最近的尝试如下(显然我还没有调用
请,我想找到每行只有一个值的最大和。我已经用暴力做出了决议,它是O(N^5)。现在我想找到一种使用动态规划的方法或另一种降低复杂性的方法。 例如: 矩阵: 5套解决方案: > 100 90 70 60 50 = 370 100 90 69 60 50 = 369 100 90 70 60 45 = 365 100 90 65 60 50 = 365 100 90 69 60 45 = 364 总数
给定一个矩阵。您需要打印矩形中左上角和右下角的所有数字的总和。 我使用自顶向下的动态规划方法来解决这个问题。查看我的代码。 输入 输出 预期产出 但当输入查询时,这会抛出非常随机的数字。我没有得到我在这里缺少的东西。有人能帮忙吗? 谢谢✌️
着色器语言中通过关键字mat2、mat3、mat4分别声明一个2x2矩阵、3x3矩阵、4x4矩阵,通过内置函数mat2()、mat3()、mat4()分别创建一个2x2矩阵、3x3矩阵、4x4矩阵。 关键字 数据类型 mat2 2x2矩阵,4个元素 mat3 3x3矩阵,9个元素 mat4 4x4矩阵,16个元素 声明变量 关键子mat4声明一个4x4矩阵 mat4 matrix4; 构造函数赋