Tag: 数组

插入已排序的数组

我想在正确的位置插入一个元素,该顺序在排序列表中维护。 我为arrays分配了2 * n的大小,并用999填充其余的,因为它们目前没有使用。 ordered_insert(int number,int array[],int size){ int i=0; int temp1,temp2,index; while(eleman>array[i]){ i++;} //push the rest to right by one index=i; if(i<size){ temp1=array[i]; temp2= array[i+1]; array[i+1]=temp1; array[i+2]=temp2; i++; } array[index]=number; } 我无法弄清楚如何覆盖999s或者有更好的方法吗?

选择使用结构数组在C中排序,错误:“需要左值”

试图对一组Structs进行排序。 Struct是下面定义的TextArt typedef struct //struct that holds ASCII art { char artistName[80]; //name of artist char asciiArt[20][80]; //actual ascii art line by line int rating; //rating of art }TextArt; 我不认为结构与此有任何关系。 我得到编译器错误 错误:当尝试将一个结构分配给另一个结构时,左值作为赋值的左操作数(见下文) temp = asciiArt+pos_min; asciiArt+pos_min = asciiArt+i; //error here asciiArt+i = *temp; //error also here 呼吁运作 selectionSort(artPtr, artArrSize); 和全选择排序function。 有什么我不明白用C =在C中分配结构吗? 我以为是这个或者我对TextArt数组的传递在某种程度上是错误的。 请赐教,谢谢。 void […]

函数参数中的int * vs int vs int(*)。 我应该使用哪一个?

在C编程语言中,有许多不同的方法来声明函数的参数,该函数将数组作为通过指针传递的参数。 我准备了一个例子,告诉你我的意思。 它是C ++中std::accumulate函数的一个实现。 它是一个函数,它可以在数组中添加所有元素并返回结果。 我可以这样写: int accumulate(int n, int *array) { int i; int sum = 0; for (i = 0; i < n; ++i) { sum += array[i]; } return sum; } 这也可以写到这(这意味着完全相同): int accumulate(int n, int array[]) { int i; int sum = 0; for (i = 0; i < n; ++i) […]

C:扫描arrays时忽略一个值

我正在分析一个数组,并使用结构来保存每个项的位置和值,我想得到这个数组的三个最小值。 这个问题是我在这种情况下忽略一个值’-5’。 如果我试图忽略这个值,索引会搞砸,我不知道该怎么做。 这是我的尝试: #include #include #include #include #include using namespace std; typedef struct pair { int value, column; } Pair; int cmp(const void *a, const void *b); int main(int argc, char** argv) { Pair data_pair[8]; int row[8] = {0, 3, 1, -5, 1, 2, 3, 4}; for (int i=0;i<8;++i){ if (row[i] != -5){ // […]

声明一个结构数组

我正在尝试创建一个结构数组,但它出现了这个错误: “错误,数组类型为不完整的元素类型” typedef struct { char data[MAX_WORD_SIZE]; int total_count; Occurrence_t reference[MAX_FILES]; int nfiles; } Word_t; struct Word_t array[a];

fork()与char数组和qsort()导致子进程停止工作

我在使用qsort()函数时遇到了一些问题。 这种情况是我之前添加的post参考的扩展。 我需要对存储成员接收元素(即卡片套装)的数组进行排序。 例如: 以下示例运行 – ./a.out A4 B2 CK DA BJ A3 DT C4 A2 B3 D4 C3 Child : 1, pid 18211 : A4 BJ A2 Child : 2, pid 18212 : B2 A3 B3 Child : 3, pid 18213 : CK DT D4 Child : 4, pid 18214 : C4 DA C3 […]

发送字符串数组MPI C.

我正在尝试向MPI中的从属进程发送一个字符串数组,但我无法弄清楚如何做到这一点。 我有一大堆字符串,我从文件中读取,我需要将这个数组的一部分发送给从属。 我正在分配一个新数组,其中包含一些来自主要数据的元素,并试图发送它。 这是代码的发送部分: int w = 0; int division = size / (procs -1); for(i=1; i<procs; i++){ //allocating char **array1 = (char**) malloc(sizeof(*array1) * division); array1[0] = (char*) malloc(sizeof(*array1[0]) * division * buf); for(j=1; j<division; j++) array1[i] = &(array1[0][i*buf]); // filling it up for(j=0; j<division; j++) array1[j] = array[w++]; // sending MPI_Send(&array1, division[i], MPI_CHAR, […]

尽管指定,打印也不会在打印数组中显示

我正在为我的第一年工作做一个简单的糖果粉碎游戏。 我正处于这个阶段,一旦程序执行,我需要在板的中心( board[5][5] )上显示我自制的简单标记(*框由’|’和’_’*组成) 。 这是当前的代码: #include #include #include //FUNCTION: Draw the Board int drawBoard() { //Declare array size int board[9][9]; //initialize variables int rows, columns, randomNumber, flag; //random number seed generator srand(time(NULL)); for ( rows = 0 ; rows < 9 ; rows++ ) { for ( columns = 0 ; columns < 9 […]

动态分配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中的整数数组

我在一个C应用程序中有一个逗号分隔的字符串,我正在将它拆分为一个整数值数组。 该字符串可以包含任意数量的逗号分隔值,因此我也没有数组的初始大小。 例如 “345,3345,35,75,52,386” 并喜欢做类似…… int parsedArray[] = parseString(“345,3345,35,75,52,386”); 在java或c#中这将是轻而易举的事情但是我认为在谈到C时我有点超出我的深度。有关如何实现这一点的想法?