“塔康”(TACAN-Tactical Air Navigation System)是战术空中导航系统的简称,由美国于1955年研制成功,后被法国、德国、英国、加拿大、日本、韩国等广泛使用。主要用于为舰载机提供从几十千米到几百千米距离范围内的导航,保障飞机按预定航线飞向目标,机群的空中集结,以及在复杂气象条件下引导飞机归航和进场等。
这是一种极坐标无线电空中导航系统,当设定旗舰为坐标原点后,舰载飞机便可通过获取与坐标原点所成的角度和距离,从而进行定位。
但某舰队现在使用的定位系统是X-Y直角坐标系的,舰队指挥官需要你编写一个程序计算舰载机目前所在的位置与旗舰的距离和相对于X轴所成的夹角的角度,以便使用“塔康”导航系统对舰载机进行导航。
测试数据有多组。第一行为一个整数T,表示有T组测试数据。每组数据开头输入两个整数x和y,表示旗舰的坐标。然后输入一个整数n(1 ≤ n ≤ 100),表示有n架舰载机,接下来有n行输入,每行两个整数xi和yi(-1000 ≤ xi,yi ≤ 1000),表示第i架舰载机的坐标。
输出n行,每行输出两个实数,分别表示第n架舰载机与旗舰的相对于X轴所成的夹角的角度r(0 <= r <= 90)、与旗舰之间的距离(四舍五入保留小数点后两位)。输出的具体格式请看样例。
#include <iostream> #include <cmath> #include <iomanip> using namespace std; const double PI=3.1415927; int main() { int a[110],b[110],t,n,i; double k,m,j; while(cin >> t) { while(t--) { cin >> a[0] >> b[0]; cin >> n; for(i=1;i<=n;i++) { cin >> a[i] >> b[i]; } for(i=1;i<=n;i++) { j=sqrt((a[i]-a[0])*(a[i]-a[0])+(b[i]-b[0])*(b[i]-b[0])); k=(abs(a[i]-a[0]))/j; m=acos(k)*(180.0/PI); cout << setiosflags(ios::fixed) << setprecision(2) << m << " DEG / " ; cout << j << " KM"<< endl; } } } return 0; }
原文地址:http://blog.csdn.net/zsc2014030403015/article/details/42523933