有4個圓塔,圓心分別為(2,2)、(-2,2)、(-2,-2)、(2,-2),圓半徑為1,見圖。這4個塔的高度為10m,塔以外無建築物。今輸入任一點的坐標,求該點的建築高度(塔外的高度為零


12. 有4個圓塔,圓心分別為(2,2)、(-2,2)、(-2,-2)、(2,-2),圓半徑為1,見圖。這4個塔的高度為10m,塔以外無建築物。今輸入任一點的坐標,求該點的建築高度(塔外的高度為零)。

有4個圓塔,圓心分別為(2,2)、(-2,2)、(-2,-2)、(2,-2),圓半徑為1,見圖。這4個塔的高度為10m,塔以外無建築物。今輸入任一點的坐標,求該點的建築高度(塔外的高度為零

解題思路: 塔的半徑為1m,則x坐標小於-3或者大於3,以及y坐標大於3或者小於-3則都是0m的建築;其余則判斷輸入的坐標是否在各個圓塔的圓形范圍內。該點到各個圓心的距離是否大於1,小於則是10m建築,否則為0m建築。

math.h中提供了fabs(double)求一個浮點數的絕對值,輸入x,y坐標

fabs(fabs(x) - 2)得到輸入坐標距離圓心的橫軸距離;

fabs(fabs(y) - 2)得到舒服坐標距離圓心的縱軸距離;

三角形兩個直角邊長平方相加,然后開平方根得到第三邊長,若大於1,則不再圓塔范圍內。

答案:

#include <stdio.h>
#include <math.h>
void main()
{
	int h;
	double x, y, m, n, r;
	printf("Please input a coordinate (x,y):");
	scanf_s("%lf,%lf", &x, &y);
	if (fabs(x) > 3 || fabs(y) > 3) {
		h = 0;
		printf("The height of the coordinate(%f,%f):h=%d\n", x, y, h);
		return 0;
	}
	m = fabs(x) - 2; n = fabs(y) - 2;
	r = sqrt(m * m + n * n);
	if (r > 1)
		h = 0;
	else
		h = 10;
	printf("The height of the coordinate(%f,%f):h=%d\n", x, y, h);
	system("pause");
	return 0;
}

有4個圓塔,圓心分別為(2,2)、(-2,2)、(-2,-2)、(2,-2),圓半徑為1,見圖。這4個塔的高度為10m,塔以外無建築物。今輸入任一點的坐標,求該點的建築高度(塔外的高度為零


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM