Программа для проверки сходства заданных двух треугольников

Опубликовано: 16 Января, 2022

Даны четыре массива из 3 чисел в каждом, которые представляют стороны и углы двух треугольников. Задача - проверить, похожи ли два треугольника или нет. Если это похоже, выведите теорему, по которой это так.
Примеры:

 Ввод: сторона1 = [2, 3, 3] угол1 = [80, 60, 40]
        сторона2 = [4, 6, 6] угол2 = [40, 60, 80]
Вывод: Треугольники похожи на SSS AAA SAS 

Ввод: сторона1 = [2, 3, 4] угол1 = [85, 45, 50]
        сторона2 = [4, 6, 6] угол2 = [40, 60, 80]
Вывод: треугольники не похожи

Рекомендуется: сначала попробуйте свой подход в {IDE}, прежде чем переходить к решению.

Подобные треугольники - это два или более треугольника, у которых все соответствующие углы равны, а все соответствующие стороны пропорциональны. Неважно, в каком направлении обращены треугольники. Их размер не имеет значения, если каждая сторона пропорциональна. Подобие треугольников доказывается следующими теоремами:

  1. Критерии сходства Side-Side-Side (SSS):
    Если все стороны треугольника пропорциональны соответствующим сторонам другого треугольника, то треугольники называются подобными по свойству сторона-сторона-сторона (SSS).
    В треугольнике ABC и PQR if треугольники AB / PQ = BC / QR = CA / RP подобны.

  1. Критерии подобия Side-Angle-Side (SAS):
    Если две стороны двух треугольников пропорциональны и угол между ними одинаков в обоих треугольниках, то говорят, что треугольники похожи по свойству Side-Angle-Side (SAS).
    В треугольнике ABC и PQR, если AB / PQ = BC / QR и знак равно треугольники похожи.

  1. Критерии подобия угол-угол-угол (AAA):
    Если все углы треугольника равны соответствующим углам другого треугольника, то треугольники называются подобными по свойству Угол-Угол-Угол (AAA).
    В треугольнике ABC и PQR, если знак равно , знак равно а также знак равно то треугольники похожи.

Below is the implementation of the above approach: 
 

C++

// C++ program to check
// similarity between
// two triangles.
#include<bits/stdc++.h>
using namespace std;
 
//Function for AAA similarity
int simi_aaa(int a1[], int a2[])
{
    sort(a1, a1 + 3);
    sort(a2, a2 + 3);
     
    // Check for AAA
    if (a1[0] == a2[0] &&
        a1[1] == a2[1] &&
        a1[2] == a2[2])
    return 1;
    else
    return 0;
     
}
 
// Function for
// SAS similarity
int simi_sas(int s1[], int s2[],
             int a1[], int a2[])
{
    sort(a1, a1 + 3);
    sort(a2, a2 + 3);
    sort(s1, s1 + 3);
    sort(s2, s2 + 3);
     
    // Check for SAS
     
    // angle b / w two smallest
    // sides is largest.
    if( s1[0] / s2[0] == s1[1] /
                         s2[1])
    {
        // since we take angle
        // b / w the sides.
        if (a1[2] == a2[2])        
            return 1;
    }
    if (s1[1] / s2[1] == s1[2] /
                         s2[2])
    {
        if (a1[0] == a2[0])
            return 1;
        }
    if (s1[2] / s2[2] == s1[0] /   
                         s2[0])
    {
        if(a1[1] == a2[1])
            return 1;
        }
    return 0;
}
 
// Function for SSS similarity
int simi_sss(int s1[], int s2[])
{
    sort(s1, s1 + 3);
    sort(s2, s2 + 3);
     
    // Check for SSS
    if(s1[0] / s2[0] == s1[1] / s2[1] &&
       s1[1] / s2[1] == s1[2] / s2[2] &&
       s1[2] / s2[2] == s1[0] / s2[0])
        return 1;
     
    return 0;
}
 
// Driver Code
int main()
{
    int s1[] = {2, 3, 3};
    int s2[] = {4, 6, 6};
         
    int a1[] = {80, 60, 40};
    int a2[] = {40, 60, 80};
 
    // function call for
    // AAA similarity
    int aaa = simi_aaa(a1, a2);
 
    // function call for
    // SSS similarity
    int sss = simi_sss(s1, s2) ;
 
    // function call for
    // SAS similarity
    int sas = simi_sas(s1, s2,
                       a1, a2) ;
 
    // Check if triangles
    // are similar or not
    if(aaa == 1 ||
       sss == 1 || sas == 1)
    {
        cout << "Triangles are "
             << "similar by ";
        if(aaa == 1) cout << "AAA ";
        if(sss == 1) cout << "SSS ";
        if(sas == 1) cout << "SAS.";
    }
     
    else
        cout << "Triangles are "
             << "not similar";
    return 0;
}
 
// This code is contributed
// by Arnab Kundu

Java

// Java program to check
// similarity between
// two triangles.
import java.util.*;
class GFG1
{
     
// Function for
// AAA similarity
static int simi_aaa(int a1[],
                    int a2[])
{
    Arrays.sort(a1);
    Arrays.sort(a2);
     
    // Check for AAA
    if (a1[0] == a2[0] &&
        a1[1] == a2[1] &&
        a1[2] == a2[2])
    return 1;
    else
    return 0;
     
}
 
// Function for
// SAS similarity
static int simi_sas(int s1[], int s2[],
                    int a1[], int a2[])
{
    Arrays.sort(a1);
    Arrays.sort(a2);
    Arrays.sort(s1);
    Arrays.sort(s2);
     
    // Check for SAS
     
    // angle b / w two smallest
    // sides is largest.
    if(s1[0] / s2[0] == s1[1] / s2[1])
    {
        // since we take angle
        // b / w the sides.
        if (a1[2] == a2[2])        
            return 1;
    }
    if (s1[1] / s2[1] == s1[2] / s2[2])
    {
        if (a1[0] == a2[0])
            return 1;
    }
    if (s1[2] / s2[2] == s1[0] / s2[0])
    {
        if(a1[1] == a2[1])
            return 1;
    }
    return 0;
}
 
// Function for
// SSS similarity
static int simi_sss(int s1[],
                    int s2[])
{
    Arrays.sort(s1);
    Arrays.sort(s2);
     
    // Check for SSS
    if(s1[0] / s2[0] == s1[1] / s2[1] &&
       s1[1] / s2[1] == s1[2] / s2[2] &&
       s1[2] / s2[2] == s1[0] / s2[0])
        return 1;
     
    return 0;
}
 
// Driver Code
public static void main(String args[])
{
    int s1[] = {2, 3, 3};
    int s2[] = {4, 6, 6};
         
    int a1[] = {80, 60, 40};
    int a2[] = {40, 60, 80};
 
    // function call for
    // AAA similarity
    int aaa = simi_aaa(a1, a2);
 
    // function call for
    // SSS similarity
    int sss = simi_sss(s1, s2) ;
 
    // function call for
    // SAS similarity
    int sas = simi_sas(s1, s2,
                       a1, a2) ;
 
    // Check if triangles
    // are similar or not
    if(aaa == 1 ||
       sss == 1 || sas == 1)
    {
        System.out.print("Triangles are " +
                         "similar by ");
        if(aaa == 1) System.out.print("AAA ");
        if(sss == 1) System.out.print("SSS ");
        if(sas == 1) System.out.print("SAS.");
    }
    else
        System.out.println("Triangles are " +
                           "not similar");
}
}
 
// This code is contributed
// by Arnab Kundu

Python

# Python program to check
# similarity between two triangles.
 
# Function for AAA similarity
def simi_aaa(a1, a2):            
    a1 = [float(i) for i in a1]
    a2 = [float(i) for i in a2]
    a1.sort()
    a2.sort()
     
    # Check for AAA
    if a1[0] == a2[0] and a1[1] == a2[1] and a1[2] == a2[2]:
        return 1
    return 0
 
# Function for SAS similarity
def simi_sas(s1, s2, a1, a2):
     
    s1 = [float(i) for i in s1]
    s2 = [float(i) for i in s2]
    a1 = [float(i) for i in a1]
    a2 = [float(i) for i in a2]
     
    s1.sort()
    s2.sort()
    a1.sort()
    a2.sort()
     
    # Check for SAS
     
    # angle b / w two smallest sides is largest.
    if s1[0] / s2[0] == s1[1] / s2[1]:
         
        # since we take angle b / w the sides.
        if a1[2] == a2[2]:        
            return 1
             
    if s1[1] / s2[1] == s1[2] / s2[2]:
        if a1[0] == a2[0]:
            return 1
             
    if s1[2] / s2[2] == s1[0] / s2[0]:
        if a1[1] == a2[1]:
            return 1
     
    return 0
 
# Function for SSS similarity
def simi_sss(s1, s2):
     
    s1 = [float(i) for i in s1]
    s2 = [float(i) for i in s2]
    s1.sort()
    s2.sort()
     
    # Check for SSS
    if(s1[0] / s2[0] == s1[1] / s2[1]
        and s1[1] / s2[1] == s1[2] / s2[2]
        and s1[2] / s2[2] == s1[0] / s2[0]):
        return 1
     
    return 0
     
 
# Driver Code
s1 = [2, 3, 3]
s2 = [4, 6, 6]
         
a1 = [80, 60, 40]
a2 = [40, 60, 80]
 
# function call for AAA similarity
aaa = simi_aaa(a1, a2)
 
# function call for SSS similarity
sss = simi_sss(s1, s2)
 
# function call for SAS similarity
sas = simi_sas(s1, s2, a1, a2)
 
# Check if triangles are similar or not
if aaa or sss or sas:
    print "Triangles are similar by",
    if aaa: print "AAA",
    if sss: print "SSS",
    if sas: print "SAS"
else: print "Triangles are not similar"
            

C#

// C# program to check
// similarity between
// two triangles.
 
using System;
 
class GFG1
{
     
// Function for
// AAA similarity
static int simi_aaa(int [] a1,
                    int [] a2)
{
    Array.Sort(a1);
    Array.Sort(a2);
     
    // Check for AAA
    if (a1[0] == a2[0] &&
        a1[1] == a2[1] &&

РЕКОМЕНДУЕМЫЕ СТАТЬИ