| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 991 人关注过本帖
标题:求助达人看看哪里错了谢谢
只看楼主 加入收藏
chad
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-10-18
收藏
 问题点数:0 回复次数:14 
求助达人看看哪里错了谢谢
#include<stdio.h>
#include<malloc.h>
#include<math.h>
/*定义两个结构体*/
struct vex{ int 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;
    int x,y,z;
    freopen("C:\\data.txt","r",stdin);
    head=0;
    while(scanf("%d%d%d",&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)
{
    int dis(struct vex *,struct vex *);
    static struct vex *p0,*temp,*head;
    struct vex *p1,*p2;
    int i=0;
    head=creatvex();
    p0=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;
   p0=p0->next;
}

/*定义距离函数dis*/
int dis(struct vex *N,struct vex *M)
{
    int 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("%d,%d,%d;\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);
}
搜索更多相关主题的帖子: head next include 结构体 
2008-11-16 15:16
ntmdgbhwdmm
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-11-16
收藏
得分:0 
你先把错误描述下吧! 这样好针对性的看
2008-11-16 15:32
chad
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-10-18
收藏
得分:0 
本意是找到立方体一个点然后输出除了体对角线的其余六点 结果只输出三点而且坐标也不是自己确定的那几个 估计就是随机数了
2008-11-16 15:39
chad
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-10-18
收藏
得分:0 
回复 2# 的帖子
本意是找到立方体一个点然后输出除了体对角线的其余六点 结果只输出三点而且坐标也不是自己确定的那几个 估计就是随机数了
2008-11-16 15:40
ntmdgbhwdmm
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-11-16
收藏
得分:0 
/*创建点的链表,由文件中输入*/
struct vex *creatvex(void)                    
{
    struct vex *p1,*p2,*head;
    int x,y,z;
    freopen("C:\\data.txt","r",stdin);          //stdin 参数错了吧 最后一个参数应是 (FILE *)
    head=0;
    while(scanf("%d%d%d",&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);
}

/*定义距离函数dis*/
int dis(struct vex *N,struct vex *M)
{
    int 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) );  //sqrt不支持 int  
    return t;
}
2008-11-16 15:42
ntmdgbhwdmm
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-11-16
收藏
得分:0 
楼主编译通过了吗?
我编译的时候出现错误
2008-11-16 15:45
ntmdgbhwdmm
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-11-16
收藏
得分:0 
printf("%d,%d,%d;\n",&p->mainvex->x,&p->mainvex->y,&p->mainvex->z);   
这句改下
printf("%d,%d,%d;\n",p->mainvex->x,p->mainvex->y,p->mainvex->z);
2008-11-16 15:47
chad
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-10-18
收藏
得分:0 
回复 5# 的帖子
呵呵请问能否帮我改改呢谢谢啦
2008-11-16 15:47
chad
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-10-18
收藏
得分:0 
回复 6# 的帖子
编译没通过纠结啊看不出哪里问题
2008-11-16 15:49
ntmdgbhwdmm
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-11-16
收藏
得分:0 
编译通过了 ,但有三个警告就是我上面提出的地方。 楼主自己查看下。
估计你的错误在这:
/*检测*/
void print(struct vexlist *head)
{
      struct vexlist *p;
      p=head;
        if(head!=0)
                do
                {
                  printf("%d,%d,%d;\n",&p->mainvex->x,&p->mainvex->y,&p->mainvex->z);     //printf("%d,%d,%d;\n",p->mainvex->x,p->mainvex->y,p->mainvex->z);   
                  p=p->next;
                }while(p!=0);
}
2008-11-16 15:59
快速回复:求助达人看看哪里错了谢谢
数据加载中...
 
   



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

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