老张的战场 2017-05-24 05:21 采纳率: 33.3%
浏览 826

江湖救急,用C编程解决椭圆问题

图片说明

  • 写回答

1条回答 默认 最新

  • 老张的战场 2017-05-24 05:28
    关注

    这是一个没有完成问题的答案:
    #include
    #include
    #include
    void f(float x1,float x2,float y1,float y2,float a)
    {
    float f1f2,b,c,m,n,k,angle;
    int i,j;
    float p[100][2]
    f1f2=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    c=f1f2/2;
    if(c>=a)
    printf("输入的数据不合理");
    else
    {
    b=sqrt(a*a-c*c);
    k=(y2-y1)/(x2-x1);
    angle=atan(k);
    m=(x1+x2)/2;
    n=(y1+y2)/2;
    for(i=0;i<50;i++)
    {
    x=(-a)+(i+1)*2*a/51;
    yz=b*sqrt(1-x*x/a/a);
    yf=-yz;
    p[i][0]=(x+m)*cos(angle)+(yz+n)*sin(angle);
    p[i][1]=(yz+n)*cos(angle)-(x+m)*sin(angle);
    p[i+50][0]=(x+m)*cos(angle)+(yf+n)*sin(angle);
    p[i+50][1]=(yf+n)*cos(angle)-(x+m)*sin(angle);
    }
    for(j=0;j<100;j++)
    printf("(x%d,y%d)=(%f,%f)",j+1,j+1,p[j][0],p[j][1];
    }
    }
    int main(void)
    {
    float x1,x2,y1,y2,a;
    int i;
    printf("请输入椭圆的焦点:(x1,y1),(x2,y2)和a值:");
    scanf("%f%f%f%f%f",&x1,&x2,&y1,&y2,&a);
    f(x1,x2,y1,y2,a);
    system("pause");
    return 0;
    }
    求教bug如何改,或者另给出一个,小弟感激不尽。

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料