Loading [MathJax]/jax/output/HTML-CSS/jax.js

在C++中查找直角三角形的其他两条边


在这个问题中,我们给定一个整数a,表示直角三角形的一条边。我们需要检查是否可以用边a构成一个直角三角形。如果可以,则找到直角三角形的其他两条边。

让我们举个例子来理解这个问题:

输入

a = 5

输出

Sides : 5, 12, 13

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

解释

直角边的长度满足:52 + 122 = 132

解决方案

解决这个问题的一个简单方法是使用勾股定理。我们知道直角三角形的边满足勾股定理,即

a2 + b2 = c2

其中a和b是三角形的两条直角边,c是斜边。

利用这个定理,我们将使用a计算b和c的值。

情况1

If a is even,
c = (a2 + 4) + 1
b = (a2 + 4) - 1

情况2

If a is odd,
c = (a2 + 1)/ 2
c = (a2 - 1)/ 2

程序示例:

示例

 在线演示

#include <bits/stdc++.h>
#include <cmath>
using namespace std;
#define PI 3.1415926535
void printOtherSides(int n) {
   int b,c;
   if (n & 1) {
      if (n == 1)
         cout << -1 << endl;
      else{
         b = (n*n-1)/2;
         c = (n*n+1)/2;
      }
   } else {
      if (n == 2)
         cout << -1 << endl;
      else{
         b = n*n/4-1;
         c = n*n/4+1;
      }
   }
   cout<<"Sides : a = "<<n<<", b = "<<b<<", c = "<<c<<endl;
}
int main() {
   int a = 5;
   printOtherSides(a);
   return 0;
}

输出

Sides : a = 5, b = 12, c = 13

更新于:2021年3月16日

浏览量:230

开启您的职业生涯

完成课程获得认证

开始学习
广告