信息:a
是直角三角形最短腿的长度,b
是另一条腿的长度,a
和{{1}之间的差异越大角度越小。那就是:
因此,最小角度将是三重(5,12,13)
我正在编写一个程序,比较一个范围内定义的所有毕达哥拉斯三元组,并以最小的角度打印三元组。到目前为止我没有工作,我不知道我可以从哪里去。
b
程序只打印差值为0
我正在寻找要打印的程序,例如上面的例子“角度最小的三角形是(5,12,13)”
我知道我必须对这些差异进行排序并对它们进行比较,但这是我到目前为止所有的提示,还有什么提示?
答案 0 :(得分:0)
你不必排序,你必须记住差异/角度/你最小化的东西,正如评论中已经提到的那样。此外,您必须记住'minimal'(a,b,c)的值以便稍后打印。像这样:
//...
if (a * a + b * b == c * c ) {
printf("%d:\t%d %d %d\n", counter++, a, b, c); //if you use ++counter instead, you won't need i ;)
if(minDifference < b-a){ //Don't be afraid of variables with long names
minA = a; minB = b; minC = c; minDifference = b-a;
}
}
//...
printf("The triangle with the smallest difference is (%d, %d, %d)", minA, minB, minC);
答案 1 :(得分:0)
您的smallest
- 代码在每种情况下都会返回0。您确定不想返回difference
(甚至是b-a
)吗?
int smallest(int a, int b) {
return b-a;
}