| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1299 人关注过本帖
标题:点坐标比较
只看楼主 加入收藏
灰熊和蜥蜴
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-4-25
结帖率:66.67%
收藏
已结贴  问题点数:1 回复次数:1 
点坐标比较
/*
p1 p1是全局变量 point类型
px,py是要比较的点
Disance()是计算两点距离的方法。
    我想比较两个点的距离
如果 px,py 的距离小于全局变量p1,p2
那么px,py替换p1,p2
距离相等时 比较 x坐标的和
px,py两点的x坐标的和小于p1,p2
就替换p1,p2
同理再比较y坐标的和。

有没有更高效的算法。
 */


void compareTwoDistance(point px,point py){
    double dm;
    double dn;
    dm=Distance(px,py);
    dn=Distance(p1,p2);
    if(dm<dn||dm==dn&&(p1.x+p2.x)>(px.x+py.x)||(dm==dn)&&p1.x+p2.x==px.x+py.x&&p1.y+p2.y>px.y+py.y){
        p1=px;
        p2=py;
    }
}
搜索更多相关主题的帖子: 坐标 比较 point 距离 小于 
2017-11-18 12:44
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
收藏
得分:1 
总的来说,逻辑过程决定算法,这个流程这么明显的问题,也不会有更好的算法。就比如说要算两个数a,b的和,有没有比a+b更好的算法一样。
就你这个问题和这个代码来说,最初始的p1,p2的距离应该可以看成已知的,作为参数传递过去,而不是在调用方法算一次。
还有就是你这个if的条件,写成这样真的好么?真的能体现水平么?这简直是一个糟糕的代码。
1)dm==dn,可能判断两次,
2)逻辑性极差。如果是在项目组,你简直是无法合作!!!你应该对dm,dn两个先分流,然后在对其他的分流,这样,程序流畅易懂,也好排错!

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2017-11-20 17:02
快速回复:点坐标比较
数据加载中...
 
   



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

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