Tutorialspoint.dev

Find the dimensions of Right angled triangle

Given H (Hypotenuse) and A (area) of a right angled triangle, find the dimensions of right angled triangle such that the hypotenuse is of length H and its area is A. If no such triangle exists, print “Not Possible”.

Examples:

Input : H = 10, A = 24
Output : P = 6.00, B = 8.00

Input : H = 13, A = 36
Output : Not Possible


Approach:
Before moving to exact solution, let’s do some of mathematical calculations related to properties of Right angled triangle.
Suppose H = Hypotenuse, P = Perpendicular, B = Base and A = Area of right angled triangle.

We have some sort of equations as :

P^2 + B^2 = H^2
P * B = 2 * A
(P+B)^2 = P^2 + B^2 + 2*P*B = H^2 + 4*A
(P+B) = sqrt(H^2 + 4*A)  ----1
(P-B)^2 = P^2 + B^2 - 2*P*B = H^2 - 4*A
mod(P-B) = sqrt(H^2 - 4*A)  ----2
from equation (2) we can conclude that if 
H^2 < 4*A then no solution is possible.

Further from (1)+(2) and (1)-(2) we have :
P = (sqrt(H^2 + 4*A) + sqrt(H^2 - 4*A) ) / 2
B = (sqrt(H^2 + 4*A) - sqrt(H^2 - 4*A) ) / 2

Below is the implementation of above approach:

C++

// CPP program to find dimensions of
// Right angled triangle
#include <bits/stdc++.h>
using namespace std;
  
// function to calculate dimension
void findDimen(int H, int A)
{
    // P^2+B^2 = H^2
    // P*B = 2*A
    // (P+B)^2 = P^2+B^2+2*P*B = H^2+4*A
    // (P-B)^2 = P^2+B^2-2*P*B = H^2-4*A
    // P+B = sqrt(H^2+4*A)
    // |P-B| = sqrt(H^2-4*A)
  
    if (H * H < 4 * A) {
        cout << "Not Possible ";
        return;
    }
  
    // sqrt value of H^2 + 4A and H^2- 4A
    double apb = sqrt(H * H + 4 * A);
    double asb = sqrt(H * H - 4 * A);
  
    // Set precision
    cout.precision(2);
  
    cout << "P = " << fixed
         << (apb - asb) / 2.0 << " ";
    cout << "B = " << (apb + asb) / 2.0;
}
  
// driver function
int main()
{
    int H = 5;
    int A = 6;
    findDimen(H, A);
    return 0;
}

/div>

Java

// Java program to find dimensions of
// Right angled triangle
class GFG {
  
    // function to calculate dimension
    static void findDimen(int H, int A)
    {
  
        // P^2+B^2 = H^2
        // P*B = 2*A
        // (P+B)^2 = P^2+B^2+2*P*B = H^2+4*A
        // (P-B)^2 = P^2+B^2-2*P*B = H^2-4*A
        // P+B = sqrt(H^2+4*A)
        // |P-B| = sqrt(H^2-4*A)
        if (H * H < 4 * A) {
            System.out.println("Not Possible");
            return;
        }
  
        // sqrt value of H^2 + 4A and H^2- 4A
        double apb = Math.sqrt(H * H + 4 * A);
        double asb = Math.sqrt(H * H - 4 * A);
  
        System.out.println("P = " + Math.round(((apb - asb) / 2.0) * 100.0) / 100.0);
        System.out.print("B = " + Math.round(((apb + asb) / 2.0) * 100.0) / 100.0);
    }
  
    // Driver function
    public static void main(String[] args)
    {
        int H = 5;
        int A = 6;
  
        findDimen(H, A);
    }
}
  
// This code is contributed by Anant Agarwal.

Python3

# Python code to find dimensions
# of Right angled triangle
  
# importing the math package 
# to use sqrt function
from math import sqrt
  
# function to find the dimensions
def findDimen( H, A):
  
    # P ^ 2 + B ^ 2 = H ^ 2
    # P * B = 2 * A
    # (P + B)^2 = P ^ 2 + B ^ 2 + 2 * P*B = H ^ 2 + 4 * A
    # (P-B)^2 = P ^ 2 + B ^ 2-2 * P*B = H ^ 2-4 * A
    # P + B = sqrt(H ^ 2 + 4 * A)
    # |P-B| = sqrt(H ^ 2-4 * A)
    if H * H < 4 * A:
        print("Not Possible")
        return
  
    # sqrt value of H ^ 2 + 4A and H ^ 2- 4A
    apb = sqrt(H * H + 4 * A)
    asb = sqrt(H * H - 4 * A)
      
    # printing the dimensions
    print("P = ", "%.2f" %((apb - asb) / 2.0))
    print("B = ", "%.2f" %((apb + asb) / 2.0))
      
      
# driver code
H = 5 # assigning value to H
A = 6 # assigning value to A
findDimen(H, A) # calliing function
  
# This code is contributed by "Abhishek Sharma 44"

C#

// C# program to find dimensions of
// Right angled triangle
using System;
  
class GFG {
  
    // function to calculate dimension
    static void findDimen(int H, int A)
    {
  
        // P^2+B^2 = H^2
        // P*B = 2*A
        // (P+B)^2 = P^2+B^2+2*P*B = H^2+4*A
        // (P-B)^2 = P^2+B^2-2*P*B = H^2-4*A
        // P+B = sqrt(H^2+4*A)
        // |P-B| = sqrt(H^2-4*A)
        if (H * H < 4 * A) {
            Console.WriteLine("Not Possible");
            return;
        }
  
        // sqrt value of H^2 + 4A and H^2- 4A
        double apb = Math.Sqrt(H * H + 4 * A);
        double asb = Math.Sqrt(H * H - 4 * A);
  
        Console.WriteLine("P = " + Math.Round(
          ((apb - asb) / 2.0) * 100.0) / 100.0);
            
        Console.WriteLine("B = " + Math.Round(
          ((apb + asb) / 2.0) * 100.0) / 100.0);
    }
  
    // Driver function
    public static void Main()
    {
        int H = 5;
        int A = 6;
  
        findDimen(H, A);
    }
}
  
// This code is contributed by vt_m.

PHP

<?php
// PHP program to find dimensions 
// of Right angled triangle
  
// function to calculate dimension
function findDimen($H, $A)
{
      
    // P^2+B^2 = H^2
    // P*B = 2*A
    // (P+B)^2 = P^2+B^2+2*P*B = H^2+4*A
    // (P-B)^2 = P^2+B^2-2*P*B = H^2-4*A
    // P+B = sqrt(H^2+4*A)
    // |P-B| = sqrt(H^2-4*A)
    if ($H * $H < 4 * $A)
    {
        echo "Not Possible ";
        return;
    }
  
    // sqrt value of H^2 + 4A and
    // H^2- 4A
    $apb = sqrt($H * $H + 4 * $A);
    $asb = sqrt($H * $H - 4 * $A);
  
    echo "P = " , $fixed
        , ($apb - $asb) / 2.0 , " ";
    echo "B = " , ($apb + $asb) / 2.0;
}
  
    // Driver Code
    $H = 5;
    $A = 6;
    findDimen($H, $A);
      
// This code is contributed by vt_m.
?>


Output:

P = 3.00
B = 4.00


This article is attributed to GeeksforGeeks.org

You Might Also Like

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter