C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で直角三角形の辺の長さを求める方法|斜辺と面積からの計算手順を解説

この問題では、直角三角形の斜辺(H)面積(A)の2つの値が与えられ、そこから直角三角形の各辺の長さ(高さと底辺)を求めることが課題となります。

直角三角形とは、2つの辺が直角(90度)で交わる特殊な三角形のことです。

具体例で問題を確認しましょう:

入力 : H = 7 , A = 8
出力 : 高さ = 2.43, 底辺 = 6.56

解法のアプローチ

この問題は、数学的な公式を用いることで解くことができます。ここで、公式を実際に導出してみましょう。

まず、直角三角形の面積と三平方の定理(ピタゴラスの定理)から、次の2つの式が成り立ちます。

A = (1/2) × h × b
H² = h² + b²

ここで、h は高さ、b は底辺、H は斜辺を表します。

(h + b) の式を導出する

展開公式 (h + b)² = h² + b² + 2hb を利用すると、

(h + b)² = H² + 4A
h + b = √(H² + 4A)

(h − b) の式を導出する

同様に、展開公式 (h − b)² = h² + b² − 2hb を利用すると、

(h − b)² = H² − 4A
h − b = √(H² − 4A)

これで2つの連立方程式が得られました。

高さ h を求める

両方の式を加算すると、

2h = √(H² + 4A) + √(H² − 4A)
h = ( √(H² + 4A) + √(H² − 4A) ) / 2

底辺 b を求める

両方の式を減算すると、

2b = √(H² + 4A) − √(H² − 4A)
b = ( √(H² + 4A) − √(H² − 4A) ) / 2

以上の2つの公式に値を代入することで、高さ h と底辺 b を求めることができます。

C++での実装例

以下は、この解法の動作を示すサンプルプログラムです。

#include <iostream>
#include <math.h>
using namespace std;

void findAllDimensionsRightTriangle(int H, int A) {
    // 解が存在しない場合の判定
    if (H * H < 4 * A) {
        cout<<"Not Possible\n";
        return;
    }
    float val1 = (float)sqrt(H * H + 4 * A);
    float val2 = (float)sqrt(H * H - 4 * A);
    float b = (float)(val1 + val2) / 2.0;
    float p = (float)(val1 - val2) / 2.0;
    cout<<"Perpendicular = "<<p<<endl;
    cout<<"Base = "<<b;
}

int main() {
    int H = 7;
    int A = 8;
    cout<<"The dimensions of the triangle are : \n";
    cout<<"Hypotenuse = "<<H<<endl;
    findAllDimensionsRightTriangle(H, A);
    return 0;
}

実行結果

The dimensions of the triangle are :
Hypotenuse = 7
Perpendicular = 2.43845
Base = 6.56155

まとめ

このように、斜辺と面積という2つの情報だけでも、代数的な変形によって連立方程式を構築すれば、直角三角形の高さと底辺を一意に求めることができます。なお、H² < 4A の場合には解が存在しないため、プログラムでは事前に条件分岐でチェックしている点にも注目してください。

  1. C++で線分の中点を求める方法とサンプルコード

    本記事では、C++を使って線分の中点(ミッドポイント)を求めるプログラムの作成方法を解説します。線分の始点Aと終点Bの2つの座標が与えられたとき、その中点を計算するアルゴリズムについて学びましょう。 問題の概要 始点A(x1, y1)と終点B(x2, y2)で構成される線分があります。この線分の中点を求めるのが課題です。 入力例 a(x1, y1) = (4, -5) b(x2, y2) = (-2, 6) 出力例 (1, 0.5) 計算の説明 (x1 + x2)/2 = (4 + (-2)) / 2 = 1 (y1 + y2)/2 = (-5 + 6) / 2 = 0.5 解決アプローチ:中

  2. C++で三角形の重心を求めるプログラムの作成方法

    この記事では、三角形の3つの頂点の座標を格納した2次元配列が与えられたときに、その三角形の重心を求めるC++プログラムの作成方法を解説します。 三角形の重心とは、三角形の3本の中線がすべて交わる点のことです。 また、三角形の中線とは、ある頂点と、その対辺(向かい合う辺)の中点を結ぶ線分のことを指します。 それでは、具体的な例を使って問題を確認してみましょう。 入力 (-3, 1), (1.5, 0), (-3, -4) 出力 (-1.5, -1) 説明 重心 (x, y) = ((-3 + 1.5 - 3) / 3, (1 + 0 - 4) / 3) = (-1.5, -1) 解法のアプロ