鱼C论坛

 找回密码
 立即注册
查看: 4395|回复: 12

为什么题目里的数据是倒退了1的呢?

[复制链接]
发表于 2013-9-7 17:24:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目如下:
有4个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1,这4个塔的高度为10m,塔外无建筑物,今输入任何一点的坐标,求该点的建筑高度,(塔外的高度为0)。

我写出来是这样的:
#include<stdio.h>
int main()
{   
int h=10;
float x,y,d1,d2,d3,d4,x1,y1,x2,y2,x3,y3,x4,y4;
x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2;
printf("请输入任意坐标x,y:   ");
scanf("%d,%d",&x,&y);  
d1=(x-x1)*(x-x1)+(y-y1)*(y-y1);
d2=(x+x2)*(x+x2)+(y-y2)*(y-y2);
d3=(x+x3)*(x+x3)+(y+y3)*(y+y3);
d4=(x-x4)*(x-x4)+(y+y4)*(y+y4);
if (d1>1 && d2>1 && d3>1 && d4>1)
  h=0;
else
  h=10;
printf("此点建筑高度为%d\n",h);            
}


而且不知道为什么,这个程序运行有些它能正常判断,有些就不能,比如我输入2,2的时候,他竟然显示高度为0,我不知道是不是我程序写错了,但大部分我输入进去的数据它都正常判断了。还有就是因为我没学过两点距离公式,在百度上搜出来是
|AB|=sqrt[x1-x2)^2+(y1-y2)^2],然后我看题里的横坐标和纵坐标有正有负,我就把运算符号给改了,我像这样才能保持原来的坐标符号,但标准答案里的好像没有改变运算符,求高手指点下迷津!谢谢

标准答案是这样的:
#include<stdio.h>
int main()
{   
int h=10;
float   x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;
printf("请输入一个点(x,y):   ");
scanf("%f,%f",&x,&y);  
d1=(x-x4)*(x-x4)+(y-y4)*(y-y4);
d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);
d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);
d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);
if (d1>1 && d2>1 && d3>1 && d4>1)   h=0;
printf("该点高度为%d\n",h);
return 0;
}



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-9-7 18:46:44 | 显示全部楼层
你两点距离公式用错了,不需要去管象限的区别的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-7 18:52:19 | 显示全部楼层
这个属于数学问题了,公式|AB|=sqrt[x1-x2)^2+(y1-y2)^2]里的x1,x2,y1,y2都是带符号的,可正可负,那个减号是固定的。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-7 18:59:31 | 显示全部楼层
亲,都是减号,不能有加号
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-8 08:52:54 | 显示全部楼层

嗯,还有就是你看标准答案里它的d1,d2,d3,d4里分别用的x和y都是在它的数字上减1的,这是为什么呢?
比如你看 d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);d3=(x-x2)*(x-x2)+(y-y2)*(y-y2),它这个是什么意思呢?和我自己写的d2=(x-x2)*(x-x2)+(y-y2)*(y-y2)这样有什么区别和好坏之分吗?谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-8 08:53:25 | 显示全部楼层
tsembrace 发表于 2013-9-7 18:46
你两点距离公式用错了,不需要去管象限的区别的

噢噢,明白了,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-8 08:53:56 | 显示全部楼层
AS爱上· 发表于 2013-9-7 18:59
亲,都是减号,不能有加号

嘻嘻,明白了,谢谢.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-8 09:20:55 | 显示全部楼层
AS爱上· 发表于 2013-9-7 18:59
亲,都是减号,不能有加号

我改成减号了但还是无法正确运行!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-8 13:30:57 | 显示全部楼层
With_You 发表于 2013-9-8 08:52
嗯,还有就是你看标准答案里它的d1,d2,d3,d4里分别用的x和y都是在它的数字上减1的,这是为什么呢?
比如 ...

没看见减1啊,,,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-8 18:45:44 | 显示全部楼层
liufei_vip 发表于 2013-9-8 13:30
没看见减1啊,,,

这是我写的求距离的式子 123123.jpg 我写的就是d1对应x1和y1.依次往下;




这是标准答案里的求距离式子: 456456.jpg 但标准答案里确实d1对应x4和y4,d3对应x2和y2,d4对应x3和y3,


你仔细看看就会看出不一样了。为什么她要这样写呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-8 18:58:02 | 显示全部楼层
With_You 发表于 2013-9-8 18:45
这是我写的求距离的式子 我写的就是d1对应x1和y1.依次往下;

哦,看出来了。没什么区别。。。
因为他们之间的等价的。。。
可以随便对应,d1对应x1和y1,或者x2和y2都是一样的。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-8 19:35:53 | 显示全部楼层
liufei_vip 发表于 2013-9-8 18:58
哦,看出来了。没什么区别。。。
因为他们之间的等价的。。。
可以随便对应,d1对应x1和y1,或者x2和y2 ...

哦也!知道了,谢谢啦!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-9 00:34:41 | 显示全部楼层
谢谢楼上几位楼主的解答,学习啦。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-6 05:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表