问题描述
我正在做一个练习,我必须创建两个结构,一个用于存储点数据,另一个用于存储多边形。然后我必须创建一个函数来创建一个给定中心、半径和顶点数量的正多边形。到目前为止,我还没有考虑半径和中心。数学运算很好,但是由于某种原因,当我尝试将点存储在多边形数组中时,似乎存在一些问题。主函数的最后一行打印 -nan
或非常大的数字(取决于数组的索引)。我猜问题出在 malloc
函数或赋值 regular_polygon->vertex_list[i] = temp;
中,但我不知道我做错了什么。
代码如下:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define PI 3.14159265
struct point {
float x;
float y;
};
struct polygon {
int num_vertex;
struct point vertex_list[];
};
struct polygon regular_polygon(struct point center,int num_vertex,float radius){
struct polygon *regular_polygon = malloc(sizeof(*regular_polygon) + num_vertex * sizeof(regular_polygon->vertex_list[0]));
regular_polygon->num_vertex = num_vertex;
float step = 2. * PI / (float) num_vertex;
for (int i = 0; i < num_vertex; i++)
{
float x = cos(i * step);
float y = sin(i * step);
struct point temp = {x,y};
printf("(%f,%f)\n",temp.x,temp.y);
// Here
regular_polygon->vertex_list[i] = temp;
}
return *regular_polygon;
}
int main() {
struct point c1 = {3,5};
struct polygon p1 = regular_polygon(c1,6,1);
printf("%f \n",p1.vertex_list[1].x );
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)