Tag: 多维数组

从文本文件中创建一个二维数组

我正在使用稀疏矩阵,并给我一个像这样的文本文件: 0 3 1.2 2 5 3.2 3 0 2.1 3 5 4.2 4 5 2.2 0 0 5.2 基本上它的工作方式是位置[0] [3]上的数字1.2和未提及的matriz的元素保持为0,所以在这种情况下它应该如下所示: 5.2 0 0 1.2 0 0 0 0 0 0 0 0 0 0 0 0 0 3.2 2.1 0 0 0 0 4.2 0 0 0 0 0 2.2

在C函数中返回二维数组?

我已经找了很长时间,但还没找到满意的解决方案。 如何在C函数中返回双维数组? float **KE() { float K[2][2]={{1,2},{3,4}}; return K; } 对于上面的代码,我得到了错误 error: cannot convert ‘float[2]’ to ‘float**’ in return

在C中将多维数组转换为单维数

如果我在C中有如下定义的数组: int B[d1][d2][d3][d4][d5][d6][d7][d8][d9]; 然后很容易将“B”转换成单维的。 但是,如果我在C中有一个数组,定义如下: int********* A; //which will be allocated as follows for example A = (int*********) malloc(N*sizeof(int********)); for(int i=0; i<N; i++) { //differentSizes will be distinct for every "i" //the same distinctness of sizes will be for every other //inner parts of all inner for loops compute(&differentSizes); A[i] = (int********) malloc(differentSizes*sizeof(int*******)); for(…) { […]

如何使用嵌套for循环添加两个2d(音调)数组?

我是cuda的新手。 我想将两个2d数组加到第三个数组中。 我使用以下代码: cudaMallocPitch((void**)&device_a, &pitch, 2*sizeof(int),2); cudaMallocPitch((void**)&device_b, &pitch, 2*sizeof(int),2); cudaMallocPitch((void**)&device_c, &pitch, 2*sizeof(int),2); 现在我的问题是,我不想在我的内核代码中使用这些数组作为扁平的二维数组我希望di使用两个for循环并将结果放在第三个数组中 __global__ void add(int *dev_a ,int *dev_b,int* dec_c) { for i=0;i<2;i++) { for j=0;j<2;j++) { dev_c[i][j]=dev_a[i][j]+dev_b[i][j]; } } } 我怎么能在CUDA做到这一点? 请告诉我如何以这种方式使用二维arrays? 使用2d-array的内核调用应该是什么? 如果可能,请使用代码示例进行说明。

动态多维数组

我需要一个多维的字符数组,它只在一个维度上是动态的… 我必须存储一对长度为10(或更少)字符的字符串,但具有可变数量的“对”。 我的想法是这样的 char (*instrucao)[2][10]; 这给了我一个指向2×10字符数组的指针,但当我做这样的事情时这不能正常工作: char strInstrucoes[117], *conjunto = calloc(21, sizeof(char)); instrucao = calloc(1, sizeof(char[2][10])); conjunto = strtok(strInstrucoes,”() “); for(i = 0; conjunto != NULL; i++){ realloc(instrucao, i+1*sizeof(char[2][10])); sscanf(conjunto,”%[^,],%s”, instrucao[i][0], instrucao[i][1]); printf(“%s | %s\n”, instrucao[i][0], instrucao[i][1]); conjunto = strtok(NULL, “() “); } 将strInstrucoes作为(abc,123) (def,456) (ghi,789) ,我没有矩阵,每行3对2对,如下所示: abc | 123 def | 456 ghi | […]

传递矩阵作为参数

我是c的新手,我正在使用CUDA编译器。 我想声明五个矩阵,从[1] [1]到[5] [5]。 用随机值初始化它们。 打印这些值。 我已经展示了我写的全部代码。 我遇到了问题 传递矩阵作为参数 初始化矩阵(应该是常量) #include #include void printMatrix(int **a, int rows, int cols) { for(int i=0; i<rows; i++){ for (int j=0; j<cols; j++){ printf("%d\t", a[i][j] ); } printf("\n"); } } int main() { int N; for (int n=0; n<=5; n++) N = n; int a[N][N]; for(int i=0; i<N; i++) […]

使用带指针的2 D数组的4种不同方法,这是对的吗? 解释会有很大帮助

下面的四个程序输入一个二维数组,然后打印出来。 第一个打印出垃圾值,并发出一些警告(我不明白)。 第二个工作正常,因为我相信二维数组线性存储在内存中,它也有意义。 第3个工作正常,但我不知道为什么它的工作原理。 第四个也适用。 因此,如果有人能够解释每种方法的运作方式,那将会很有帮助 我担心我对指针如何工作的理解并不像我想象的那么好。 int main(){ int n; int a [3][4]; int i=0,j=0,count=0; for(i=0;i<3;i++){ for(j=0;j<4;j++){ scanf("%d",(a+4*i+j)); // Output-514623632 514623648 514623664 514623680 514623696 514623712 514623728 514623744 514623760 514623776 514623792 514623808 } } for(i=0;i<3;i++){ for(j=0;j<4;j++){ printf("%d\t",*(a+4*i+j)); } } return 0; } Warnings -solution.c:15:21: warning: format '%d' expects argument of type 'int *', but argument […]

使用c中的指针将2d数组传递给函数

这是我第一次不得不在这里问一个问题通常不需要,但这次我只是想不出来。 基本上我正试图在控制台中创建1和0(随机位置的1和0)的网格。 1s是木屑,0s代表空白区域。 要做到这一点,我必须使用此函数初始化和填充二维数组并返回指向已完成数组的指针 int* createEnvironment(int width, int height, int numWoodChips) 然后我需要使用此function打印2d数组 void printEvrionment(int* environment, int width, int height) 这就是我到目前为止所拥有的 int enviroWidth = 20; int enviroHeight = 20; int* createEnvironment(int width, int height, int numWoodChips); void printEvrionment(int* environment, int width, int height); void freeArray(int width, int* environment); int main(int argc, char **argv) { int *arr […]

如何在不输入/空格字符的情况下扫描到2d char数组?

所以我必须制作一个迷宫程序,并开始我必须在迷宫中扫描到2darrays。 当我将chars放入数组时,当输入char和空格char总是占用数组中的第一个插槽时,会出现问题… 这是我的代码: int main(){ int row, col; int i,j,k,l; scanf(“%d”, &row); scanf(“%d”, &col); char** maze = (char**) calloc(row, sizeof(char*)); for ( k = 0; k < row; k++ ) { maze[k] = (char*) calloc(col, sizeof(char)); } for(i=0;i<row;i++){ for(j=0;j<col;j++){ scanf("%c",&maze[j][i]); } } for(k=0;k<row;k++){ for(l=0;l<col;l++){ printf("%c", maze[k][l]); } printf("\n"); } return 0; } 输出是: 使用enter char: […]

使用指向函数C语言的双指针访问2D数组

我试图在双指针的帮助下找到从C函数访问的2D数组中的所有值的最大值。 当我运行代码时,它会终止并返回任何值给调用者函数。 我试图更改代码以打印所有值以找出问题,并发现它只打印1和2作为输入以下示例数据。 对于示例代码运行,我提供了row = 2,col = 2和values = 1,2,3,4 请让我知道为什么? 如果你的问题不清楚,请说出来。 我度过了艰难的一天所以也许无法解释得更好。 代码有一些限制:1。函数签名(int ** a,int m,int n) #include int findMax(int **a,int m,int n){ int i,j; int max=a[0][0]; for(i=0;i<m;i++){ for(j=0;jmax){ max=a[i][j]; } //printf(“\n%d”,a[i][j]); } } return max; } int main(){ int arr[10][10],i,j,row,col; printf(“Enter the number of rows in the matrix”); scanf(“%d”,&row); printf(“\nEnter the number of […]