Calcular el área de un cuadrilátero cíclico con longitudes de lado dadas

Dados cuatro números enteros positivos A , B , C y D que representan la longitud de los lados de un cuadrilátero cíclico , la tarea es encontrar el área del cuadrilátero cíclico.

Ejemplos:

Entrada: A = 10, B = 15, C = 20, D = 25
Salida: 273.861

Entrada: A = 10, B = 30, C = 50, D = 20
Salida: 443.706

Enfoque: El problema dado se puede resolver con base en las siguientes observaciones:

  • Un cuadrilátero cíclico es un cuadrilátero cuyos vértices se encuentran todos en un solo círculo. El círculo se llama circuncírculo o círculo circunscrito, y se dice que los vértices son concíclicos.

  • En la imagen de arriba, r es el radio del círculo y A , B , C y D son las longitudes de los lados PQ , QR , RS y SP respectivamente.
  • El área del cuadrilátero está dada por la fórmula de Bretschneider :

Area = \sqrt(s - A)*(s - B)*(s - C)*(s - D) - A*B*C*D *\cos\frac{(\alpha + \gamma)}{2}

donde A, B, C y D son los lados del triángulo y
α y γ son los ángulos opuestos del cuadrilátero.

Ya que la suma de los ángulos opuestos del cuadrilátero es 180 grados. Por lo tanto, el valor de cos(180/2) = cos(90) = 0.

Por lo tanto, la fórmula para encontrar el área se reduce a  \sqrt(s - A)*(s - B)*(s - C)*(s - D)             .

Por lo tanto, la idea es imprimir el valor de  \sqrt(s - A)*(s - B)*(s - C)*(s - D)              como el área resultante del cuadrilátero dado.

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

C++

// C++ program for the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the area
// of cyclic quadrilateral
float calculateArea(float A, float B,
                    float C, float D)
{
    // Stores the value of
    // half of the perimeter
    float S = (A + B + C + D) / 2;
 
    // Stores area of cyclic quadrilateral
    float area = sqrt((S - A) * (S - B)
                      * (S - C) * (S - D));
 
    // Return the resultant area
    return area;
}
 
// Driver Code
int main()
{
    float A = 10;
    float B = 15;
    float C = 20;
    float D = 25;
    cout << calculateArea(A, B, C, D);
 
    return 0;
}

Java

// Java program for the above approach
import java.io.*;
 
class GFG{
     
// Function to find the area
// of cyclic quadrilateral
static float calculateArea(float A, float B,
                           float C, float D)
{
     
    // Stores the value of
    // half of the perimeter
    float S = (A + B + C + D) / 2;
 
    // Stores area of cyclic quadrilateral
    float area = (float)Math.sqrt((S - A) * (S - B) *
                                  (S - C) * (S - D));
 
    // Return the resultant area
    return area;
}
 
// Driver code
public static void main (String[] args)
{
    float A = 10;
    float B = 15;
    float C = 20;
    float D = 25;
     
    System.out.println(calculateArea(A, B, C, D));
 
}
}
 
// This code is contributed by Ankita saini

Python3

# Python3 program for the above approach
from math import sqrt
 
# Function to find the area
# of cyclic quadrilateral
def calculateArea(A, B, C, D):
     
    # Stores the value of
    # half of the perimeter
    S = (A + B + C + D) // 2
 
    # Stores area of cyclic quadrilateral
    area = sqrt((S - A) * (S - B) *
                (S - C) * (S - D))
 
    # Return the resultant area
    return area
 
# Driver Code
if __name__ == '__main__':
     
    A = 10
    B = 15
    C = 20
    D = 25
     
    print(round(calculateArea(A, B, C, D), 3))
 
# This code is contributed by mohit kumar 29

C#

// C# program for the above approach
using System;
 
class GFG{
 
// Function to find the area
// of cyclic quadrilateral
static float calculateArea(float A, float B,
                           float C, float D)
{
     
    // Stores the value of
    // half of the perimeter
    float S = (A + B + C + D) / 2;
 
    // Stores area of cyclic quadrilateral
    float area = (float)Math.Sqrt((S - A) * (S - B) *
                                  (S - C) * (S - D));
 
    // Return the resultant area
    return area;
}
 
// Driver Code
static public void Main()
{
    float A = 10;
    float B = 15;
    float C = 20;
    float D = 25;
     
    Console.Write(calculateArea(A, B, C, D));
}
}
 
// This code is contributed by code_hunt

Javascript

<script>
// java script  program for the above approach
 
// Function to find the area
//of cyclic quadrilateral
function calculateArea(A, B, C, D){
     
    //Stores the value of
    // half of the perimeter
    let S = (A + B + C + D) /2
 
    // Stores area of cyclic quadrilateral
    let area = Math.sqrt((S - A) * (S - B) *
                (S - C) * (S - D))
 
    //Return the resultant area
    return area;
    }
 
// Driver Code
 
     
    let  A = 10;
    let B = 15;
    let C = 20;
    let D = 25;
     
    document.write(calculateArea(A, B, C, D).toFixed(3))
 
//this code is contributed by sravan kumar
</script>
Producción: 

273.861

 

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

Publicación traducida automáticamente

Artículo escrito por sam_2200 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 *