鱼C论坛

 找回密码
 立即注册
查看: 1664|回复: 4

大神求助啊!!!程序一直崩溃

[复制链接]
发表于 2014-9-29 16:59:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请!大神帮忙,小弟的需求是,随机产生圆(x,y,r),横纵坐标和半径,让每个圆相互不相交。 谢谢啦!急急急!

#include <stdio.h>
#include <stdlib.h>                  //生成随机数用
#include <time.h>                    //利用时间生成种子
#include <math.h>                    
struct Parameter
{
        double x;
        double y;
        double r;
        struct Parameter *next;
};
Parameter *head,*p,*p1;
#define LEN sizeof(Parameter)
int n=1;
int Cross(double ,double ,double );
int Distance(double ,double ,double);
void main()
{
    double a[3],sum=0.00;
        int num,i;
        FILE *fp;
        printf("input the num:");
        scanf("%d",&num);
        if(!(fp=fopen("data.txt","w+")))
        {
                printf("error!\n");
                exit(0);
        }
        srand(time(NULL));         //生成种子
        for(;n<=num;n++)
        {
               
                for(i=0;i<3;i++)
                {
                        a[i]=(rand()%100)/100.00;      
                }
                if(a[2]>a[0]/2.00||a[2]>a[1]/2.00)
                        continue;
                if(!Distance(a[0],a[1],a[2]))
                {
                        --n;
                        continue;
                }
                printf("%0.2f,%0.2f,%0.2f\n",a[0],a[1],a[2]);                        
                fprintf(fp,"\t<geom_object>\n");
                fprintf(fp,"\t\t<cylinder label = ”gp%d“>\n",n);
                fprintf(fp,"\t\t\t<bottom>[%0.2f,%0.2f,.0]</bottom>\n",a[0],a[1]);
                fprintf(fp,"\t\t\t<top>[%0.2f,%0.2f,.05]</top>\n",a[0],a[1]);
                fprintf(fp,"\t\t\t<radius> %0.2f </radius>\n",a[2]);
                fprintf(fp,"\t\t</cylinder>\n");
                fprintf(fp,"\t\t<res>[2,2,2]</res>\n");
                fprintf(fp,"\t\t<velocity>[0.1,-0.1,0.0]</velocity>\n");
                fprintf(fp,"\t\t<temperature>12</temperature>\n");
                fprintf(fp,"\t</geom_object>\n");
        }  
        printf("\nnum = %d\n",--n);
        fclose(fp);
}

int Distance(double x,double y,double r)
{
        p=(Parameter *)malloc(sizeof(LEN));
        if(1==n)
        {               
                head=p;
                p->x=x;
                p->y=y;
                p->r=r;
        }        
        else
        {
                if(!Cross(x,y,r))
                {
                        free(p);
                        return 0;
                }
                p1->next=p;
                p->x=x;
                p->y=y;
                p->r=r;
        }
        p1=p;
        p1->next=NULL;
        return 1;
}
int Cross(double x,double y,double r)
{
        int i;
        Parameter *p2;
        for(p2=head,i=1;i<n;i++,p2=p2->next)
        {
                if((x - p2->x)*(x - p2->x)+(y - p2->y)*(y - p2->y) < (r + p2->r)*(r + p2->r))
                        return 0;
        }
        return 1;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-9-30 22:58:44 | 显示全部楼层
你把错误报告一起贴上来啊,你这程序让我们分析要很久啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-1 10:38:05 | 显示全部楼层
bbddbb123 发表于 2014-9-30 22:58
你把错误报告一起贴上来啊,你这程序让我们分析要很久啊

您好!
      程序一运行就直接崩溃掉了·不会出现报告的·
程序实现的功能很简单,就是随机生成x,y,r(x坐标,y坐标以及半径r),并且生成出相互不相交的圆 ,其中的fprintf部分可以不看,是我写入文件的内容而已!感谢大神了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-6 09:13:30 | 显示全部楼层
我手头没有编译器,也没法测试,不好意思。如果程序一运行就直接崩溃掉了,一般是逻辑错误,编译器不容易检测出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2014-11-1 03:38:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 07:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表