3276 - 习题4-12 求建筑物高度

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 12 MB

有4个圆塔,圆心分别为(2, 2)、(-2, 2)、(-2, -2)、(2, -2),圆半径为1,如下图所示。这4个塔的高度为10米(m),塔以外无建筑物。

 

现输入任一点的坐标,求该点的建筑物高度(塔外的高度为零)。

题目输入

输入以圆括号括起来的两个数字,两个数字之间以逗号(,)分隔,格式如:(x,y)

如下为正确输入:

(1.5,1.9)

浮点型变量,请定义为float类型。

题目输出

该建筑物的高度,末尾换行。

输入/输出样例

输入格式

(1.8,1.9)

输出格式

10

C语言解答

#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;
	scanf("%f,%f",&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=10; 
	printf("%d\n",h);
}

C++解答

#include<cstdio>
int main()
{
	float x,y;
	int h=10;
	scanf("(%f,%f)",&x,&y);
	float d1=(x-2)*(x-2)+(y-2)*(y-2);
	float d2=(x+2)*(x+2)+(y-2)*(y-2);
	float d3=(x+2)*(x+2)+(y+2)*(y+2);
	float d4=(x-2)*(x-2)+(y+2)*(y+2);
	if (d1>1 && d2>1 && d3>1 && d4>1) h=0;
	printf("%d\n",h);
	return 0;
}