Tag: 多维数组

动态分配2d数组

我正在尝试创建一个二维数组,特别是有向图的邻接矩阵。 我以前从未尝试过这种动态内存分配,而且我遇到了麻烦。 这是代码: int n, i; printf(“Number of nodes is: “); scanf(“%d”, &n); int ** array = malloc(n * sizeof(int*)); for(i = 0; i < n; i++) array[i] = malloc(n * sizeof(int)); printf("Number of edges is: "); scanf("%d", &m); int x, y; for(i=0;i<m;i++) { scanf("%d %d", &x, &y); array[x][y]=1; } 一旦我完成所有边缘,程序停止工作并抛出通常的“exe已经停止工作”。 问题出在哪里? 编辑:houssam发现了我的错误。 第一个“for”应该从1变为n。 当我输入1 […]

C中的多维数组

这与我在这个问题中的答案的评论有关: 如何从1d中转出2d数组? 所以,请考虑以下代码段: int M = 5; int N = 5; int** theArray = (int**) malloc(M*sizeof(int*)); for (int i = 0; i < M; i++) { theArray[i] = (int*) malloc(N*sizeof(int)); for(int j = 0 ; j < N; j++) { theArray[i][j] = i+j; printf("%d ", theArray[i][j]); } printf("\n"); } for (int k = 0; k […]

将文件中的值加载到2D数组指针的值

如何在另一个函数中正确地将文件中的值加载到矩阵中? void someFunction(int ***matrix, n, m) { int c, d; FILE *fp = fopen(“some.txt”, “r”); // načtení souboru for (c = 0; c < m; c++) { for (d = 0; d < n; d++) { fscanf(fp, "%i", &matrix[c][d]); //4th read throws error } } } int main() { int i; int **matrix; int n […]

动态分配2D数组而不使用任何循环?

我们可以动态分配2D数组而不使用任何for循环或while循环吗? 我在c c ++中有任何直接命令或function吗?

C检查2d数组中元素的所有邻居

我一直在想是否有更智能的解决方案,如果我想检查二进制数中任意元素的所有八个邻居只有C中的二维数组 我所做的是: Psudo代码: //return how many neighbor of an element at x,y equals 1. int neighbor(int** array, int x, int y) if x>WIDTH error if y>HIEGHT error if x==0 ignore west, nw, sw, and calculate the rest….. etc.. 这是相当沉闷的,有没有更聪明的解决方案?

如何从字符串中获取单词并将它们放在字符串数组中? 在C.

我基本上在一个字符串中有一个句子,并希望将每个单词的单词分解。 每个单词都应该进入一个字符串数组。 我不被允许使用strtok 。 我有这个代码,但它不起作用。 有人可以帮忙吗? 在互联网上肯定有类似的东西,但我找不到任何东西…… int main(){ char s[10000]; // sentence char array[100][100]; // array where I put every word printf(“Insert sentence: “); // receive the sentence gets(s); int i = 0; int j = 0; for(j = 0; s[j] != ‘\0’; j++){ // loop until I reach the end for(i = 0; […]

为全局访问保存2D动态数组(矩阵)c

我正在尝试将使用函数填充的2D数组保存到全局内存中。 处理了许多矩阵,并且在成功时,需要保存正确的Matrix以访问许多function。 目前,函数中的矩阵是使用以下代码动态分配的: int **M = malloc(m * sizeof(int *)); for(i = 0; i < m; i++) M[i] = malloc(n * sizeof(int)); 我声明了一个全局变量(int ** M_save)。 在需要保存矩阵的主程序中,使用相同的过程初始化全局数组: **M_save = malloc(m * sizeof(int *)); for (i = 0; i < m; i++) M_save[i] = malloc(n * sizeof(int)); 然后通知该函数它需要在释放其内存之前保存矩阵,并在保存的函数中使用以下过程: if(saveMatrix == 1) { for(i = 0; i < […]

MPI将动态2Darrays广播到其他处理器

我已经搜索了很多解释,但我想我无法弄清楚我是如何做到这种情况的。 我想做类似的事情:使用主处理器,我正在创建一个动态的2D数组。 然后我想; 1-将此arrays发送到其他处理器。 并且每个处理器打印该2Darrays2-将该arrays的一部分发送给其他人。 每个处理器将其部件打印到屏幕上。 例如; 我有2Darrays11 * 11和4个处理器。 等级0是主人。 其他人是奴隶。 对于第一种情况,我想将所有数组发送到排名1,排名2和排名3.而对于第二种情况,我想将行分享给从属。 11/3 = 3.因此,等级1需要3行,等级2需要3行,等级3需要5行。 这是我的代码: int processorID; int numberOfProcessors; int main(int argc, char* argv[]){ MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD ,&numberOfProcessors); MPI_Comm_rank(MPI_COMM_WORLD ,&processorID); double **array; if(MASTER){ array = (double**) malloc(11*sizeof(double *)); for(i=0; i<11; i++){ array[i] = (double *) malloc(11*sizeof(double)); } for(i=0; i<11; i++){ for(j=0; j<11; j++){ […]

传递一列2D数组

假设我有一个2D array ,我想将它的第i列传递给一个sort function ,该sort function接收一1D array并对其进行排序。 可以在不使用C/C++语言将列复制到另一个array情况下完成。 我担心减少使用的time and space 。 (当然复杂性仍然相同)

C – 2Darrays – 幻方阵4

114 void fillDoubly(int square[20][20], int n){ 115 116 int i, j, k=0, l=0, counter=0, test[400]={0}, diff=n/4-1; 117 118 for(i=0;i<n;i++) //first nested for loops for part 1) 119 for(j=0;j=0;i–) // for part 2) 130 for(j=n-1;j>=0;j–){ 131 if(square[i][j]==0){ 132 while(test[k]!=0){ 133 k++; 134 } 135 test[k]=1; 136 square[i][j]=k+1; 137 } 138 } 139 } 所以基本上,我必须生成4阶魔术平方,即行和列可以被4整除。 我提供的算法是 遍历数组并填充对角线子集 […]