Tag: arrays

C中数组的频率计数是这个代码有效和高效

我在c中有以下代码用于计算数组中的数字频率: #define MAX 10 int flag=0; void display(int no,int cnt,int visi[]);//function declaration int main() { int arr[]={1,1,1,2,3,4,2,2,3,1};//asume any array or we can enter from user int visited[MAX]; int i,j,no,cnt=1; clrscr(); for(i=0;i<10;i++)//loop { no=arr[i]; cnt=1; for(j=i+1;j<10;j++) { if(no==arr[j]) cnt++; } display(no,cnt,visited); } return 0; } void display(int no,int cnt,int visited[]) { int static i; int j; […]

fortran77,iso_c_binding和c string

我试图从C调用一些Fortran77代码,但我没有找到传递C char数组的正确方法。 SUBROUTINE My_F_Code (c_message) BIND(C, NAME=’my_f_code’) USE ISO_C_BINDING IMPLICIT NONE CHARACTER*(C_CHAR) c_message CHARACTER*(256) f_message CALL C_F_POINTER( C_LOC(c_message), f_message) WRITE(*,*) f_message,LEN(f_message) END 这个方法适用于Fortran 90和target,指针说明符,但Fortran 77似乎没有这样的东西。 所以,上面的代码不编译。 BIND(C)强制参数c_message为大小1.如何访问c_message字符串的其他元素? 编译:GCC 4.8.2

C程序将空间分隔的int的输入字符串转换为int数组

题: 我想创建一个C程序,它将一串空格分隔的int作为输入(正数和负数,可变数字位数),并将字符串转换为int数组。 从Stack Overflow上的字符串输入读取整数还有另一个问题,但它不适用于数字长度大于1或负数的数字。 尝试: #include int main () { int arr[1000], length = 0, c; while ((c = getchar()) != ‘\n’) { if (c != ‘ ‘) { arr[length++] = c – ‘0’; } } printf(“[“); for ( int i = 0; i < length-1; i++ ) { printf("%d,", arr[i]); } printf("%d]\n", arr[length-1]); } […]

在整数数组中查找最大/最小出现次数

我刚刚编写了一个算法,该算法在输入整数数组中查找具有最大/最小出现次数的值。 我的想法是对数组进行排序(所有出现的顺序都是按顺序排列)并使用对来为每个值存储相应的出现次数。 它应该是O(nlogn)复杂度,但我认为有一些常数乘数。 我该怎么做才能提高性能? #include #include #include “e7_8.h” #define N 20 /*Structure for pair*/ typedef struct { int value; int freq; } VAL_FREQ; void get_freq(int *v, int n, int *most_freq, int *less_freq) { int v_i, vf_i, current_value, current_freq; VAL_FREQ* sp = malloc(n*sizeof(VAL_FREQ)); if(sp == NULL) exit(EXIT_FAILURE); mergesort(v,n); vf_i = 0; current_value = v[0]; current_freq = […]

C中的字符数组和scanf函数

我希望在下面的代码中得到错误,但我没有。 我没有使用&签名。 我也正在编辑char的数组。 #include int main() { char name[10] =”yasser”; printf(“%s\n”,name); // there is no error , // trying to edit array of chars, // also did not use & sign. scanf(“%s”,name); // did not use strcpy function also. printf(“%s\n”,name); return 0; }

从字符串中获取整数

我在从字符串中获取整数并使用它时遇到麻烦。 我有: char *string = “I 17 24 flying bits”; 我想把17和24作为整数并使用它们。 指针转换是不可能的,我如何获得这些整数并使用它们?

使用CUDA在本地内存中的数组上定义变量大小

是否有可能在设备函数中创建列表,数组,列表/数组的大小,以及调用中的参数…或者在调用时初始化的全局变量? 我想像这些列表中的一个工作: unsigned int size1; __device__ void function(int size2) { int list1[size1]; int list2[size2]; } 是否有可能做一些聪明的事情来做这样的工作?

2次幂数据的性能优势?

如果我有一个拥有3D世界的游戏,并且世界相当大,那么需要分成几个块,是否有一个主要的,如果有的话,有128个字节块的性能优势,比如150个字节的块? 显然,块中的对象仍然是整数个字节。 即chunks[128][128][128]比chunks[150][150][150]或chunks[112][112][112]更快? 之后是否存在其他副作用,例如过多的RAM浪费? 是否还有其他因素需要考虑? 我只是看到将所有内容存储在变量和大小为2的幂的数组中是一种惯例,但我不确定它是否有任何优点,如果使用更多人类数字如100或150更好。

使用CUDA生成排列

我正在阅读有关CUDA的内容,我试图实现一个简单的代码来创建array {a,b,c,d}每个可能的排列,但我不知道如何实现CUDA方式(因为所有的例子我读取的formsa[blockIdx.x] = b[blockIdx.x] + c[blockIdx.x] )。 任何帮助将不胜感激。

在scanf中使用整数变量作为索引

我正在尝试在我的函数中执行以下操作但仍然遇到分段错误错误。 当我尝试使用[iModify – 1]作为我的索引时,它失败了。 你能不能将int变量计算用作C中的索引? int modify(pb *PhoneBook) { int x; int iModify = 0; char name_num[] = {‘\0’}; print(PhoneBook); printf(“\nWhich entry would you like to modify? “); scanf(“%d”, &iModify); printf(“\niModify – 1: %d\n”, iModify – 1); printf(“\nModify name or number? “); scanf(“%s”, name_num); convert_u(name_num); if (strcmp(name_num, “NAME”) == 0) { printf(“\nEnter new name: “); […]