麻烦看看哪里出错了,代码过一部分测试点,怎么也找不到解决办法
地球的半径是6440公里。有许多人造卫星围绕着地球运行。如果两颗人造卫星对地球中心形成一个夹角,您能计算出这两颗人造卫星之间的距离吗?距离分别以圆弧距离(arc distance)和直线弦距离(chord distance)来表示。这两颗人造卫星是在同一轨道上(本题设定这两颗人造卫星是在一条圆形路径上,而不是在椭圆路径上,绕地球运行)。
输入输出格式
输入格式
输入包含一个或多个测试用例。.
每个测试用例一行,给出两个整数s和a,以及一个字符串”min”或”deg”;其中s是人造卫星与地球表面的距离,a是这两颗人造卫星对地球中心的夹角。以分(′),或者以度(◦),为单位。输入不会既给出分,又给出度。
输出格式
对于每个测试用例,输出一行,给出两个卫星之间的圆弧距离和直线弦距离,以公里为单位。距离是一个浮点数,保存小数点后的六位数字。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define R 6440
#define P 3.14159265358979323846
int main()
{
double a=0,s=0,arc=0,cho=0;
char angle[4]={0};
while(scanf("%lf %lf %s",&s,&a,angle)!=-1)
{
if(angle[0]=='m') a=a/60;
a=a*P/180;
if(a>P)a=2*P-a;
arc=(s+R)*a;
cho=2*(s+R)*sin(a/2);
printf("%.6lf %.6lf",arc,cho);
}
return 0;
}