输入n后,输入平面上n个点的坐标值,计算并输出所有各点的距离的总和

sure2003 2007-12-15 01:42:24
说明下,最近因为要上专业的考试班
这些题目,我努力都去做了
但都调试不过来
所以请大家帮忙讨论讨论
...全文
640 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Treazy 2007-12-23
  • 打赏
  • 举报
回复
等候什么,不是已经给你写好了嘛~~~
sure2003 2007-12-22
  • 打赏
  • 举报
回复
等候中。。。
mu_yang 2007-12-16
  • 打赏
  • 举报
回复
"专业的考试班"
呵呵
怪不得发的帖子那么多呢
我觉得你的问题是在学校的课堂的基础没打好
不要迷信什么"专业的考试班"
sure2003 2007-12-16
  • 打赏
  • 举报
回复
感动中,昨晚我也是一夜难眠
Minkey 2007-12-16
  • 打赏
  • 举报
回复
02:56:11
=========
深夜还能头脑清醒地写代码....
顶楼上...呵呵
Treazy 2007-12-16
  • 打赏
  • 举报
回复

/*
说明:
以下程序中若有点数据重复输入,则对数据未作剔除!
比如有2个点重复输入了,则对该2点仍作为2点处理
计算长度的时候计算2次
比如(1,1)(2,2)(1,1)
那计算出来的就是2.82
若对输入的数据还能进行剔除的话,这个功能楼主可以自己添加!

其他程序都作了比较好的保护和处理!

*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <setjmp.h>

typedef struct
{
float x;
float y;
}DOT;

double Distance(DOT *p, int n)
{
int i, j;
double sum = 0;

for(i = 0; i<n-1; i++)
{
for(j = i+1; j<n; j++)
{
sum += sqrt(pow(p[i].x-p[j].x, 2.0) + pow(p[i].y-p[j].y, 2.0));
}
}

return sum;
}

int main()
{
int n, i;
DOT *dot;
double sum;
jmp_buf buf;

setjmp(buf);
printf("Input the number of the points: ");
scanf("%d", &n);

if(n > 0)
{
dot = (DOT *)malloc(n*sizeof(DOT));

if(dot == NULL)
{
printf("Memory malloc error!");
return 0;
}

for(i = 0; i<n; i++)
{
printf("point %d\tx:", i);
scanf("%f", &dot[i].x);
printf("point %d\ty:", i);
scanf("%f", &dot[i].y);
}

sum = Distance(dot, n);
printf("\nThe Result of all the distance is:%lf", sum);
}
else
{
printf("Input error!Tyr again\n");
longjmp(buf, 1);
}
getchar();
return 0;

}

sure2003 2007-12-15
  • 打赏
  • 举报
回复
求详细的代码过程,谢谢
p0303230 2007-12-15
  • 打赏
  • 举报
回复
貌似不难
把所有坐标存在一个数组里

typedef struct
{
int x;
int y;
}pos;

float distance(pos a, pos b)
{
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧