Find other two sides and angles of a right angle triangle

Given one side of right angle triangle, check if there exists a right angle triangle possible with any other two sides of the triangle. If possible print length of the other two sides and all the angles of the triangle.

Examples:

Input : a = 12
Output : Sides are a = 12, b = 35, c = 37
Angles are A = 18.9246, B = 71.0754, C = 90
Explanation: a = 12, b = 35 and c = 37 form right
angle triangle because
12*12 + 35*35 = 37*37

Input : a = 6
Output : Sides are a = 6, b = 8, c = 10
Angles are A = 36.8699, B = 53.1301, C = 90



Approach to check if triangle exists and finding Sides:
To solve this problem we first observe the Pythagoras equation. If a and b are the lengths of the legs of a right triangle and c is the length of the hypotenuse, then the sum of the squares of the lengths of the legs is equal to the square of the length of the hypotenuse.
This relationship is represented by the formula:

a*a + b*b = c*c

Case 1: a is an odd number: Given a, find b and c

c2 - b2 = a2
OR
c = (a2 + 1)/2;
b = (a2 - 1)/2;

Above solution works only for case when a is odd, because a2 + 1 is divisible by 2 only for odd a.

Case 2 : a is an even number: When c-b is 2 & c+b is (a2)/2

c-b = 2 & c+b = (a2)/2
Hence,
c = (a2)/4 + 1;
b = (a2)/4 - 1;

This works when a is even.

Approach to find Angles:
First find all sides of triangle. Then Applied “SSS” rule that’s means law of cosine:

      \[1.\ cos(a)=\frac{b^2+c^2-a^2}{2bc}\]\  \[2.\ cos(b)=\frac{a^2+c^2-b^2}{2ac}\]\  \[3.\ cos(c)=\frac{a^2+b^2-c^2}{2ab}\]

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to print all sides and angles of right
// angle triangle given one side
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
  
#define PI 3.1415926535
  
// Function to find angle A 
// Angle in front of side a
double findAnglesA(double a, double b, double c)
{
    // applied cosine rule
    double A = acos((b * b + c * c - a * a) / (2 * b * c));
  
    // convert into degrees
    return A * 180 / PI;
}
  
// Function to find angle B 
// Angle in front of side b
double findAnglesB(double a, double b, double c)
{
    // applied cosine rule
    double B = acos((a * a + c * c - b * b) / (2 * a * c));
  
    // convert into degrees and return
    return B * 180 / PI;
}
  
// Function to print all angles 
// of the right angled triangle
void printAngles(int a, int b, int c)
{
    double x = (double)a;
    double y = (double)b;
    double z = (double)c;
      
    // for calculate angle A
    double A = findAnglesA(x, y, z);
      
    // for calculate angle B
    double B = findAnglesB(x, y, z);
      
    cout << "Angles are A = " << A << ", B = " <<
                        B << ", C = " << 90 << endl;
}
  
// Function to find other two sides of the
// right angled triangle
void printOtherSides(int n) 
{   
    int b,c;
      
    // if n is odd 
    if (n & 1) 
    
        // case of n = 1 handled separately 
        if (n == 1) 
            cout << -1 << endl; 
        else
        
            b = (n*n-1)/2; 
            c = (n*n+1)/2; 
            cout << "Side b = " << b 
                << ", Side c = " << c << endl; 
        
    
    else
    
        // case of n = 2 handled separately 
        if (n == 2) 
            cout << -1 << endl; 
        else
        
            b = n*n/4-1; 
            c = n*n/4+1; 
            cout << "Side b = " << b 
                << ", Side c = " << c << endl; 
        
    
      
    // Print angles of the triangle
    printAngles(n,b,c);
  
// Driver Program
int main()
{
    int a = 12;
  
    printOtherSides(a);
      
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to print all sides and angles of right
// angle triangle given one side
  
  
import java.io.*;
  
class GFG {
   
  
static double  PI = 3.1415926535;
  
// Function to find angle A 
// Angle in front of side a
static double findAnglesA(double a, double b, double c)
{
    // applied cosine rule
    double A = Math.acos((b * b + c * c - a * a) / (2 * b * c));
  
    // convert into degrees
    return A * 180 / PI;
}
  
// Function to find angle B 
// Angle in front of side b
static double findAnglesB(double a, double b, double c)
{
    // applied cosine rule
    double B = Math.acos((a * a + c * c - b * b) / (2 * a * c));
  
    // convert into degrees and return
    return B * 180 / PI;
}
  
// Function to print all angles 
// of the right angled triangle
static void printAngles(int a, int b, int c)
{
    double x = (double)a;
    double y = (double)b;
    double z = (double)c;
      
    // for calculate angle A
    double A = findAnglesA(x, y, z);
      
    // for calculate angle B
    double B = findAnglesB(x, y, z);
      
    System.out.println( "Angles are A = " + A + ", B = " +
                        B + ", C = " + 90);
}
  
// Function to find other two sides of the
// right angled triangle
static void printOtherSides(int n) 
    int b=0,c=0;
      
    // if n is odd 
    if ((n & 1)>0
    
        // case of n = 1 handled separately 
        if (n == 1
            System.out.println( -1); 
        else
        
            b = (n*n-1)/2
            c = (n*n+1)/2
            System.out.println( "Side b = " + b 
                + ", Side c = " + c ); 
        
    
    else
    
        // case of n = 2 handled separately 
        if (n == 2
            System.out.println( -1); 
        else
        
            b = n*n/4-1
            c = n*n/4+1
            System.out.println( "Side b = " + b 
                + ", Side c = " + c); 
        
    
      
    // Print angles of the triangle
    printAngles(n,b,c);
  
// Driver Program
  
  
    public static void main (String[] args) {
    int a = 12;
  
    printOtherSides(a);
    }
}
  
// This code is contributed 
// by inder_verma..

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 program to print all 
# sides and angles of right 
# angle triangle given one side
import math
  
PI = 3.1415926535
  
# Function to find angle A 
# Angle in front of side a
def findAnglesA( a, b, c):
      
    # applied cosine rule
    A = math.acos((b * b + c * c - a * a) / 
                              (2 * b * c))
  
    # convert into degrees
    return A * 180 / PI
  
# Function to find angle B 
# Angle in front of side b
def findAnglesB(a, b, c):
  
    # applied cosine rule
    B = math.acos((a * a + c * c - b * b) / 
                              (2 * a * c))
  
    # convert into degrees 
    # and return
    return B * 180 / PI
  
# Function to print all angles 
# of the right angled triangle
def printAngles(a, b, c):
  
    x = a
    y = b
    z = c
      
    # for calculate angle A
    A = findAnglesA(x, y, z)
  
    # for calculate angle B
    B = findAnglesB(x, y, z)
      
    print("Angles are A = ", A, 
          ", B = ", B , ", C = ", "90 ")
  
# Function to find other two sides 
# of the right angled triangle
def printOtherSides(n):
      
    # if n is odd 
    if (n & 1) :
          
        # case of n = 1 handled 
        # separately 
        if (n == 1): 
            print("-1"
        else:
              
            b = (n * n - 1) // 2
            c = (n * n + 1) // 2
            print("Side b = ", b, 
                  " Side c = ", c)
      
    else:
          
        # case of n = 2 handled 
        # separately 
        if (n == 2) :
            print("-1")
        else:
            b = n * n // 4 - 1;
            c = n * n // 4 + 1;
            print("Side b = " , b, 
                  ", Side c = " , c)
          
    # Print angles of the triangle
    printAngles(n, b, c) 
  
# Driver Code
if __name__ == "__main__":
    a = 12
  
    printOtherSides(a)
  
# This code is contributed 
# by ChitraNayal

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to print all sides 
// and angles of right angle 
// triangle given one side
using System;
  
class GFG 
{
static double PI = 3.1415926535;
  
// Function to find angle A 
// Angle in front of side a
static double findAnglesA(double a, 
                          double b, double c)
{
    // applied cosine rule
    double A = Math.Acos((b * b + c * 
                          c - a * a) / 
                         (2 * b * c));
  
    // convert into degrees
    return A * 180 / PI;
}
  
// Function to find angle B 
// Angle in front of side b
static double findAnglesB(double a, 
                          double b, double c)
{
    // applied cosine rule
    double B = Math.Acos((a * a + c * 
                          c - b * b) / 
                         (2 * a * c));
  
    // convert into degrees and return
    return B * 180 / PI;
}
  
// Function to print all angles 
// of the right angled triangle
static void printAngles(int a, int b, int c)
{
    double x = (double)a;
    double y = (double)b;
    double z = (double)c;
      
    // for calculate angle A
    double A = findAnglesA(x, y, z);
      
    // for calculate angle B
    double B = findAnglesB(x, y, z);
      
    Console.WriteLine( "Angles are A = " +
                            A + ", B = " +
                        B + ", C = " + 90);
}
  
// Function to find other two sides 
// of the right angled triangle
static void printOtherSides(int n) 
    int b = 0, c = 0;
      
    // if n is odd 
    if ((n & 1) > 0) 
    
        // case of n = 1 handled separately 
        if (n == 1) 
            Console.WriteLine( -1); 
        else
        
            b = (n * n - 1) / 2; 
            c = (n * n + 1) / 2; 
            Console.WriteLine( "Side b = " + b 
                           + ", Side c = " + c); 
        
    
    else
    
        // case of n = 2 handled separately 
        if (n == 2) 
            Console.WriteLine( -1); 
        else
        
            b = n * n / 4 - 1; 
            c = n * n / 4 + 1; 
            Console.WriteLine( "Side b = " + b + 
                             ", Side c = " + c); 
        
    
      
    // Print angles of the triangle
    printAngles(n, b, c);
  
// Driver Code
public static void Main () 
{
    int a = 12;
      
    printOtherSides(a);
}
}
  
// This code is contributed 
// by inder_verma

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to print all sides 
// and angles of right angle triangle
// given one side
$PI = 3.1415926535;
  
// Function to find angle A 
// Angle in front of side a
function findAnglesA($a, $b, $c)
{
    global $PI;
      
    // applied cosine rule
    $A = acos(($b * $b + $c
               $c - $a * $a) / (2 * $b * $c));
  
    // convert into degrees
    return $A * 180 / $PI;
}
  
// Function to find angle B 
// Angle in front of side b
function findAnglesB($a, $b, $c)
{
    global $PI;
    // applied cosine rule
    $B = acos(($a * $a + $c
               $c - $b * $b) / (2 * $a * $c));
  
    // convert into degrees and return
    return $B * 180 / $PI;
}
  
// Function to print all angles 
// of the right angled triangle
function printAngles($a, $b, $c)
{
    $x = (double)$a;
    $y = (double)$b;
    $z = (double)$c;
      
    // for calculate angle A
    $A = findAnglesA($x, $y, $z);
      
    // for calculate angle B
    $B = findAnglesB($x, $y, $z);
      
    echo "Angles are A = " . $A .
         ", B = " . $B . ", C = 90\n";
}
  
// Function to find other two sides 
// of the right angled triangle
function printOtherSides($n
      
    // if n is odd 
    if ($n & 1) 
    
        // case of n = 1 handled separately 
        if ($n == 1) 
            echo "-1\n"
        else
        
            $b = ($n * $n - 1) / 2; 
            $c = ($n * $n + 1) / 2; 
            echo "Side b = " . $b
                 ", Side c = " . $c . "\n"
        
    
    else
    
        // case of n = 2 handled separately 
        if ($n == 2) 
            echo "-1\n"
        else
        
            $b = $n * $n / 4 - 1; 
            $c = $n * $n / 4 + 1; 
            echo "Side b = " . $b
                 ", Side c = " . $c . "\n"
        
    
      
    // Print angles of the triangle
    printAngles($n, $b, $c);
  
// Driver Code
$a = 12;
  
printOtherSides($a);
  
// This code is contributed by mits
?>

chevron_right


Output:

Side b = 35, Side c = 37
Angles are A = 18.9246, B = 71.0754, C = 90


My Personal Notes arrow_drop_up

Strategy Path planning and Destination matters in success No need to worry about in between temporary failures

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : inderDuMCA, Ita_c, Mithun Kumar