Tag: 2d

使用C中的指针进行2D数组操作

假设我有一个操作2D数组的函数,该数组从主函数接收指向2D数组的指针作为其参数。 现在,我想修改(假设每个元素添加10个)2D数组的每个元素。 我有兴趣知道使用给我的单个指针遍历2D数组并返回新修改的数组的指针。 粗糙的结构 假设指针a包含2D数组的初始地址。 int add_10(int *a) { int i, j, b[M][N] = {0}; for(i = 0; i < M; i++) for(j = 0; j < N; j++) b[i][j] = 10 + a[i][j]; }

2d动态数组(在C中),每行具有特定的行号和不同的列大小

如何在每行中创建具有特定行号和不同列大小的2d动态数组(在C中)? 例如:这是一个数组(3 =行) |1 | 4 | 5 | |3 | |6 | 2 | 第1行 – 3列 第2行 – 1列 第3行 – 2列 我希望我的程序在运行时向用户询问每一行以给出cols的数量。 我如何制作这样的数组?

C,多维数组练习

我对二维数组的理解是错误的。 所以我会以另一种方式处理这个问题。 说我有以下变量。 int student_id[10], course_id[5]; int student_course[10][2]; 只有10名学生。 只能有5门课程。 学生只能参加2门课程。 /*prompt user for student id*/ /* say that the value for: student_id[0]=123 */ /*prompt user for course id*/ /* say that the value for: course_id[0]=101 course_id[1]=102 course_id[2]=103 course_id[3]=104 course_id[4]=105 */ 我要打印的是 student_course[value_of_student_id][value_of_course_id] 。 所以我想这样做: int student_id[10], course_id[5], student_course[10][2] int i, j, k; for(i=0; i<10;i++){ […]

在C中填充来自字符串的2d数组

我想用一些数字填充二维数组。 数字采用网格格式,如下所示: 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 […]

释放二维arrays – 检测到堆腐蚀

编辑:对不起伙计们,我忘了提到这是在VS2013中编码的。 我有一个全局声明的结构: typedef struct data //Struct for storing search & sort run-time statistics. { int **a_collision; } data; data data1; 然后我分配我的记忆: data1.a_collision = (int**)malloc(sizeof(int)*2); //Declaring outer array size – value/key index. for (int i = 0; i < HASH_TABLE_SIZE; i++) data1.a_collision[i] = (int*)malloc(sizeof(int)*HASH_TABLE_SIZE); //Declaring inner array size. 然后我初始化所有元素: //Initializing 2D collision data array. for (int […]

如何在C中向二维数组添加字符串

我开始学习C并且我遇到了将字符串输入添加到2D数组的问题,我能够正确地获取字符串输入但是当我尝试将字符串元素添加到数组时它不能按预期工作当打印数组时(这是我测试程序的方式),它会为数组中的每个索引分配一个字符而不是整个字符串。 这是我的观看代码,非常感谢您提前感谢任何发布的帮助。 #include main() { char c_array[3][3]; int x; int y; int z=10; int i_user_input; char c_name[256]; for(x=0;x<=+2;x++) { for(y=0;y<=2;y++) { printf("\nPlease enter a name to the system:"); scanf(" %s",&c_array[x][y]); printf("The string is %s\n",c_name); printf("Please press '1' if you would like to keep entering names\n"); printf("Please press '2' if you would like to print the […]

线性插值:基于2D表计算校正

我尝试做的事情应该只是一个二维的线性插值,但目前我找不到正确的方法。 为了简单地描述问题:有一个大小为3000×3000像素的绘图区域,我必须画一条水平线。 为此,我从每个像素位置到下一个像素位置绘制点或短线,然后形成一条线。 现在必须对整个事物应用校正,其中校正信息可以在(对于该示例简化)4×4arrays中找到,其中每个元素包含描述校正后的值的一对坐标。 所以中性数组(没有校正)看起来像这样: 0,0 1000,0 2000,0 3000,0 0,1000 1000,1000 2000,1000 3000,1000 0,2000 1000,2000 2000,2000 3000,2000 0,3000 1000,3000 2000,3000 3000,3000 真正的校正表将包含描述要进行的校正的其他坐标: 因此,作为输入数据,我在没有校正的情况下具有点上的点的坐标,没有校正的字段值和校正数据。 但是,如何计算现在应用校正值的线点,以便绘制如图像右侧所示的扭曲线? 我目前使用X和Y的两个单独线性插值的方法不起作用,Y位置在单元格边界上跳跃但在单元格内没有平滑变化。 所以…任何想法如何做到这一点?

重新分配连续的2D数组

我使用Shawn Chin在这里发布的方法生成连续的2d数组。[1] [2] 它工作得很好。 简要地从他的post: char** allocate2Dchar(int count_x, int count_y) { int i; # allocate space for actual data char *data = malloc(sizeof(char) * count_x * count_y); # create array or pointers to first elem in each 2D row char **ptr_array = malloc(sizeof(char*) * count_x); for (i = 0; i < count_x; i++) { ptr_array[i] […]

Variadic C函数打印多个2-D char数组

我需要在C中设置一个可变参数函数,它可以并排打印可变数量的2-D char数组。 我很难弄清楚如何使用va_arg()初始化boards变量。 关键问题是: boards[i] = va_arg(ap, char*[][BOARDSIZE]); 该行产生编译错误(目前, Second argument to ‘va_arg’ is of incomplete type ‘char *[][10]’ ),但基本上我确定我没有做正确的事情。 我只是不确定那是什么东西。 我尝试了几种变化无济于事。 其余的代码应该没问题。 (预先感谢您的任何帮助。) #include #include #define BOARDSIZE 10 void showBoardVariadic(int numArgs, …) { va_list ap; va_start(ap, numArgs); // Assign an array of 2-D char arrays. char *boards[numArgs][BOARDSIZE][BOARDSIZE]; for (int i = 0; i < […]

OpenGL旋转2D纹理

UPDATE 请参阅底部以获取更新 我一直在寻找很多互联网,我找到了一些教程,解释了我想要实现的目标,但我无法让它工作,教程不完整或不适用于我的代码。 我正在尝试像在原点(中心)周围旋转2D图像一样简单的事情。 我使用xStart,xEnd,yStart和yEnd来翻转0或1的纹理。 这就是代码的样子 GameRectangle dest = destination; Vector2 position = dest.getPosition(); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, this->image); //If the rotation isn’t 0 we’ll rotate it if (rotation != 0) { glMatrixMode(GL_TEXTURE); glLoadIdentity(); glTranslatef(0.5, 0.5, 0); glRotatef(rotation, 0, 0, 1); glMatrixMode(GL_PROJECTION); } glBegin(GL_QUADS); glTexCoord2d(xStart,yStart); glVertex2f(position.x, position.y); glTexCoord2d(xEnd,yStart); glVertex2f(position.x + this->bounds.getWidth(), position.y); glTexCoord2d(xEnd,yEnd); glVertex2f(position.x + this->bounds.getWidth(), position.y […]