| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 471 人关注过本帖
标题:帮忙看看……错误
只看楼主 加入收藏
mwebc
Rank: 2
等 级:论坛游民
帖 子:9
专家分:13
注 册:2010-7-21
结帖率:100%
收藏
已结贴  问题点数:6 回复次数:4 
帮忙看看……错误
#include <math.h>
#include <stdio.h>
struct point
{
double x;
double y;
};
point gravity(point *p,int n);
int main(int argc, char *argv[])
{
int n;
point life,back;
struct point *ps;
ps=&life;
printf("请输入x,y");
scanf("%f %f",ps->x,ps->y);
printf("请输入点数n");
scanf("%d",n);
back=gravity(ps,n);

printf ("坐标为(%d,%d)",back.x,back.y);
    return 0;
}
point gravity(point *p,int n)
{
double area = 0;
point center;
center.x = 0;
center.y = 0;
int i;
for(i = 0; i < n-1; i++)
{
   area += (p[i].x*p[i+1].y - p[i+1].x*p[i].y)/2;
   center.x += (p[i].x*p[i+1].y - p[i+1].x*p[i].y) * (p[i].x + p[i+1].x);
   center.y += (p[i].x*p[i+1].y - p[i+1].x*p[i].y) * (p[i].y + p[i+1].y);
}

area += (p[n-1].x*p[0].y - p[0].x*p[n-1].y)/2;
center.x += (p[n-1].x*p[0].y - p[0].x*p[n-1].y) * (p[n-1].x + p[0].x);
center.y += (p[n-1].x*p[0].y - p[0].x*p[n-1].y) * (p[n-1].y + p[0].y);

center.x /= 6*area;
center.y /= 6*area;

return center;
}
搜索更多相关主题的帖子: return include center 
2010-08-19 20:59
S_12s
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:110
专家分:670
注 册:2010-7-21
收藏
得分:3 
  以下是我做的一些修改的,编译没有错误了!但你的程序是有很大的错误的:函数gravity中对指针p的操作有误,你没有定义结构体数组,却去调用了,这样结果就有错了;建议你找有关的书看一下。
#include <math.h>
#include <stdio.h>

typedef struct point
{
    double x;
    double y;
}point;

point gravity(point *p,int n);

int main(int argc, char *argv[])
{
    int n;
    point life,back;
    struct point *ps;
    ps=&life;
   
   …………
     scanf("%d",&n);
    back=gravity(ps,n);
     return 0;
}


point gravity(point *p,int n)
{
    double area = 0;
    int i;
    point center;
    center.x = 0;
    center.y = 0;
  ………………
    …………


    return center;
}

[ 本帖最后由 S_12s 于 2010-8-22 11:45 编辑 ]
2010-08-22 11:41
tangjin19864
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2010-5-11
收藏
得分:0 
我没有明白你写的这个做什么的,而且太多错误啦
2010-08-22 15:01
xiayizhanzyf
Rank: 2
等 级:论坛游民
帖 子:80
专家分:78
注 册:2010-7-21
收藏
得分:3 
#include <iostream.h>
#include <math.h>
#include <iomanip.h>

struct point
{
double x;
double y;
};

point gravity(point *p, int n)
{
double area = 0;
point center;
center.x = 0;
center.y = 0;

for (int i = 0; i < n-1; i++)
{
   area += (p[i].x*p[i+1].y - p[i+1].x*p[i].y)/2;
   center.x += (p[i].x*p[i+1].y - p[i+1].x*p[i].y) * (p[i].x + p[i+1].x);
   center.y += (p[i].x*p[i+1].y - p[i+1].x*p[i].y) * (p[i].y + p[i+1].y);
}

area += (p[n-1].x*p[0].y - p[0].x*p[n-1].y)/2;
center.x += (p[n-1].x*p[0].y - p[0].x*p[n-1].y) * (p[n-1].x + p[0].x);
center.y += (p[n-1].x*p[0].y - p[0].x*p[n-1].y) * (p[n-1].y + p[0].y);

center.x /= 6*area;
center.y /= 6*area;

return center;
}

void main()
{
    const n=1;
    point g[n];
    int i;
    for(i=0;i<n;i++)
    {
        cin>>g[i].x;
        cin>>g[i].y;
    }
    point ans=gravity(g,n);
    cout<<"重心是:"<<'('<<ans.x<<','<<ans.y<<')'<<endl;
}
2010-08-22 19:52
xiayizhanzyf
Rank: 2
等 级:论坛游民
帖 子:80
专家分:78
注 册:2010-7-21
收藏
得分:0 
哦,可以把n改为你需要输入的点数
2010-08-22 19:53
快速回复:帮忙看看……错误
数据加载中...
 
   



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

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