Dividir un triángulo isósceles en dos partes con relación de áreas como n:m

Dada la altura  H    de un triángulo isósceles y dos números enteros  n    m    . La tarea es encontrar la altura  h    desde la parte superior del triángulo tal que si hacemos un corte a la altura h desde la parte superior paralela a la base, entonces el triángulo debe dividirse en dos partes con la proporción de sus áreas igual a n:m
Ejemplos
 

Input : H = 4, n = 1, m = 1
Output : 2.82843

Input : H = 4, n = 1, m = 0
Output : 4

En primer lugar, antes de continuar, mencionemos algunas de las propiedades básicas de un triángulo isósceles.
Sea ▲ABC un triángulo isósceles con AB = AC y BC siendo lado y base desiguales del triángulo. Si D es el punto medio de BC, entonces AD es nuestra altura H. Además, si dibujamos una línea paralela a BC que corta a AB y AC en los puntos E y F respectivamente y G es el punto medio de EF, entonces ▲AEG es similar a ▲ABD, ▲AFG es similar a ▲ACD, ▲AEF es similar a ▲ABC, y al usar las propiedades de los triángulos similares podemos concluir los siguientes puntos: 
AE/AB = AG/AD = EG/BD = EF/BC = AF /AC —–(i)
 

Según el requisito del problema, tenemos que encontrar la altura h, tal que la relación entre el área de ▲AEF y el área del trapecio EFCB = n:m.
 

Sea h la altura de corte desde la parte superior del triángulo. 
Ahora, el área de ▲AEF = 0.5 * AG * EF y el área del trapecio EFCB = 0.5 * GD * (EF+BC) 
también, la relación de ambos es n:m. 
Entonces, podemos decir que la relación entre el área de ▲AEF y el área de ▲ABC es igual a n :(n+m). 
=> área de ▲AEF / área de ▲ABC = n / (n+m) 
=> (0.5 * AG * EF) / (0.5 * AD * BC) = n / (n+m) 
=> (AG/AD ) * (EF/BC) = n / (n+m) 
=> (EF/BC) * (EF/BC) = n / (n+m) 
=> h 2 /H 2 = n / (n+m ) 
=> h = H*raíz cuadrada(n/(n+m)) 
 

A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ program, to find height h
// which divide isosceles triangle
// into ratio n:m
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the height
float heightCalculate(int H, int n, int m)
{
    // type cast the n, m into float
    float N = n * 1.0;
    float M = m * 1.0;
    // calculate the height for cut
    float h = H * sqrt(N / (N + M));
    return h;
}
 
// Driver code
int main()
{
    int H = 10, n = 3, m = 4;
    cout << heightCalculate(H, n, m);
    return 0;
}

Java

// Java program, to find height h
// which divide isosceles triangle
// into ratio n:m
 
import java.io.*;
 
class GFG {
 
 
// Function to return the height
static float heightCalculate(int H, int n, int m)
{
    // type cast the n, m into float
    float N = (float)(n * 1.0);
    float M = (float)(m * 1.0);
    // calculate the height for cut
    float h = H *(float) Math.sqrt(N / (N + M));
    return h;
}
 
// Driver code
 
 
    public static void main (String[] args) {
            int H = 10, n = 3, m = 4;
    System.out.print( heightCalculate(H, n, m));
    }
}

Python3

# Python 3 program, to find height
# h which divide isosceles triangle
# into ratio n:m
from math import sqrt
 
# Function to return the height
def heightCalculate(H, n, m):
     
    # type cast the n, m into float
    N = n * 1.0
    M = m * 1.0
     
    # calculate the height for cut
    h = H * sqrt(N / (N + M))
    return h
 
# Driver code
if __name__ == '__main__':
    H = 10
    n = 3
    m = 4
    print("{0:.6}" .
    format(heightCalculate(H, n, m)));
     
# This code is contributed
# by Surendra_Gangwar

C#

// C# program, to find height h
// which divide isosceles triangle
// into ratio n:m
using System;
 
class GFG
{
 
// Function to return the height
static float heightCalculate(int H,
                             int n, int m)
{
    // type cast the n, m into float
    float N = (float)(n * 1.0);
    float M = (float)(m * 1.0);
     
    // calculate the height for cut
    float h = H * (float) Math.Sqrt(N / (N + M));
    return h;
}
 
// Driver code
public static void Main ()
{
    int H = 10, n = 3, m = 4;
    Console.WriteLine(heightCalculate(H, n, m));
}
}
 
// This code is contributed
// by inder_verma

PHP

<?php
// PHP program, to find height h
// which divide isosceles triangle
// into ratio n:m
 
// Function to return the height
function heightCalculate($H, $n, $m)
{
    // type cast the n, m into float
    $N = $n * 1.0;
    $M = $m * 1.0;
     
    // calculate the height for cut
    $h = $H * sqrt($N / ($N + $M));
    return $h;
}
 
// Driver code
$H = 10; $n = 3; $m = 4;
echo heightCalculate($H, $n, $m);
 
// This code is contributed
// by anuj_67
?>

Javascript

<script>
 
// JavaScript program, to find height h
// which divide isosceles triangle
// into ratio n:m
 
// Function to return the height
function heightCalculate(H, n, m)
{
    // type cast the n, m into float
    let N = n * 1.0;
    let M = m * 1.0;
    // calculate the height for cut
    let h = H * Math.sqrt(N / (N + M));
    return h;
}
 
// Driver code
 
    let H = 10, n = 3, m = 4;
    document.write(heightCalculate(H, n, m));
 
 
// This code is contributed by Surbhi Tyagi.
 
</script>
Producción

6.54654

Complejidad de Tiempo : O(1)
Espacio Auxiliar : O(1)

Publicación traducida automáticamente

Artículo escrito por Shivam.Pradhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *