📌  相关文章
📜  查找其他两个边和一个直角三角形的角度

📅  最后修改于: 2021-05-04 22:42:39             🧑  作者: Mango

给定直角三角形的一侧,请检查是否存在与三角形的任何其他两个侧面都可能存在的直角三角形。如果可能的话,打印其他两面的长度以及三角形的所有角度。

例子:

检查三角形是否存在并找到Sides的方法
为了解决这个问题,我们首先观察毕达哥拉斯方程。如果a和b是直角三角形的边的长度,而c是斜边的长度,则边的长度的平方之和等于斜边的长度的平方。
此关系由以下公式表示:

a*a + b*b = c*c

情况1: a是一个奇数:给定a,找到b和c

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

上述解决方案仅在a为奇数的情况下有效,因为a2 + 1仅对奇数a可被2整除。

情况2: a为偶数:cb为2&c + b为(a2)/ 2

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

当a为偶数时有效。

查找角度的方法
首先找到三角形的所有边。然后应用“ SSS”规则,即余弦定律:

      \[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}\]

下面是上述方法的实现:

C++
// C++ program to print all sides and angles of right
// angle triangle given one side
#include 
#include 
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;
}


Java
// 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..


Python 3
# 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


C#
// 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


PHP


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