| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 385 人关注过本帖
标题:求助达人 看看到底哪里出错了 谢谢
只看楼主 加入收藏
chad
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-10-18
收藏
 问题点数:0 回复次数:1 
求助达人 看看到底哪里出错了 谢谢
#include<stdio.h>
#include<malloc.h>
#include<math.h>
/*定义两个结构体*/
struct vex{ double x,y,z; struct vex *next;struct vex *last;};
struct vexlist
{
  struct vex *mainvex;
  struct vex *re_vex[6];
  struct vexlist *next;
};
/*创建点的链表,由文件中输入*/
struct vex *creatvex(void)                    
{
    struct vex *p1,*p2,*head;
    double x,y,z;
    freopen("C:\\data.txt","r",stdin);
    head=0;
    while(scanf("%f%f%f",&x,&y,&z)!=EOF)
    {
        p1=(struct vex*)malloc(sizeof(struct vex));
        p1->x=x,p1->y=y,p1->z=z,p1->next=0;p1->last=0;
        if(!head)
        {
            head=p1;
            p2=p1;
        }
        else
        {
            p2->next=p1;
            p1->last=p2;
            p2=p1;
        }
    }
    return (head);
}

/*创建点列的链表,由点链表中操作得*/
struct vexlist *creatlist(void)
{
struct vexlist *head,*p1,*p2;
int n;
void in(struct vexlist *);
n=0;
head=0;
p1=p2=(struct vexlist *)malloc(sizeof(struct vexlist));
in(p1);
  while(p1->next!=0)
  {n=n+1;
   if(n==1)head=p1;
    else
     p2->next=p1;
  p2=p1;  
  p1=(struct vexlist *)malloc(sizeof(struct vexlist));
  in(p1);
  }
return head;
}

/*定义IN函数*/
void in (struct vexlist *vlist)
{
    double dis(struct vex *,struct vex *);
    static struct vex *p0,*temp,*head;
    struct vex *p1,*p2;
    int i=0;
    head=creatvex();
    p0=head;
    temp=head;
      if(temp->last==0)
        temp=p0->next;
        else
        {temp=head;
        p0->last->next=p0->next;
        p0->next->last=p0->last;
        }
   do
   {p1=temp;
   p2=p1->next;
   if(dis(p0,p1)<dis(p0,p2))
     {
         vlist->re_vex[i]=p1;
         p1=p2;
         p2=p2->next;
     }
     else
     {
         vlist->re_vex[i]=p2;
         p2=p2->next;
     }
   i++;
   }while(p2->next==0);
   vlist->mainvex=p0;
   if(p0->last!=0)
   {
       p0->last->next=p0;
       p0->next->last=p0;
   }
   p0=p0->next;
}

/*定义距离函数dis*/
double dis(struct vex *N,struct vex *M)
{
    double t;
    t=sqrt((N->x-M->x)*(N->x-M->x)+(N->y-M->y)*(N->y-M->y)+(N->z-M->z)*(N->z-M->z));
    return t;
}


/*检测*/
void print(struct vexlist *head)
{
      struct vexlist *p;
      p=head;
        if(head!=0)
                do
                {
                  printf("%f,%f,%f;\n",&p->mainvex->x,&p->mainvex->y,&p->mainvex->z);     
                  p=p->next;
                }while(p!=0);
}
void main()
{  
   void print(struct vexlist *head);
   struct vex *creatvex(void);
   struct vexlist *creatlist(void);
   struct vexlist *p;
   p=creatlist();
   print(p);
}
2008-11-16 18:17
chad
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-10-18
收藏
得分:0 
本意是在一个立方体中确立一个点然后输出除体对角线外的其余六点 可是编译没问题输出却只有三个点且输出的都是零 为啥呢哪里出错了?
2008-11-16 18:18
快速回复:求助达人 看看到底哪里出错了 谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012438 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved