NENU数据处理练习

题目描述

当你拥有计算机后,数学运算就变得非常简单了。举个例子来说,你可能知道直角三角形的定义:如果3边a,b,c(假定c为最长的边,也就是斜边)满足如下关系:a * a + b * b = c * c,那么这个就是直角三角形。这就是所谓的毕达哥拉斯(Pythagora)定律。
这里如果给定其中的两个边,如何计算第三边的长度。

输入

输入包含一些三角形的描述,每个描述占一行,包括了三个整数a,b和c,表示对应的直角三角形的三个边。三个数字当中有一个等于-1(表示未知的边),其余两个都是正数(表示已知的边)。如果a=b=c=0表示输入结束。

输出

对于每个输入的三角形,首先要输出三角形的序号,如输出样例所示。如果不能构成直角三角形,输出“Impossible.”。否则,输出为“s = L”,其中s是未知边的名称(a,b或c),L为其长度,精确到小数点后三位。
每个测试数据后输出一个空行。

样例输入 复制

3 4 -1
-1 2 7
5 -1 3
0 0 0

样例输出 复制

Triangle #1
c = 5.000

Triangle #2
a = 6.708

Triangle #3
Impossible.
#include
#include
int main()
{
	double a, b, c;
	int count = 1;
	while (scanf("%lf%lf%lf", &a, &b, &c) != EOF)
	{
		double x[3];
		x[0] = a; x[1] = b; x[2] = c;
		if (a = b = c == 0)
			break;
		if (x[0] == -1)
		{
			x[0] = sqrt(x[2] * x[2] - x[1] * x[1]);
			if ((x[2]> x[1]) && (x[2] > x[0]))
			{
				printf("Triangle #%d\n", count);
				printf("a = %.3lf\n", x[0]);
			}
			else
			{
			    printf("Triangle #%d\n", count);
				printf("Impossible.\n");
			}
			count++;
		}
		if (x[1] == -1)
		{
			x[1] = sqrt(x[2] * x[2] - x[0] * x[0]);
			if ((x[2]> x[1]) && (x[2] > x[0]))
			{
				printf("Triangle #%d\n", count);
				printf("b = %.3lf\n", x[1]);
			}
			else
			{
			    printf("Triangle #%d\n", count);
				printf("Impossible.\n");
			}
			count++;
		}
		if (x[2] == -1)
		{
			x[2] = sqrt(x[1] * x[1] + x[0] * x[0]);
			if ((x[2]> x[1]) && (x[2] > x[0]))
			{
				printf("Triangle #%d\n", count);
				printf("c = %.3lf\n", x[2]);
			}
			else
			{
			    printf("Triangle #%d\n", count);
				printf("Impossible.\n");
			}
			count++;
		}
		printf("\n");
	}
	return 0;
}

 

你可能感兴趣的:(NENU算法课,c++,c语言,算法)