Given a rhombus with diagonals a and b, which contains an inscribed circle. The task is to find the area of that circle in terms of a and b.
Examples:
Input: l = 5, b = 6
Output: 11.582Input: l = 8, b = 10
Output: 30.6341
Approach: From the figure, we see, the radius of inscribed circle is also a height h=OH of the right triangle AOB. To find it, we use equations for triangle’s area :
Area AOB = 1/2 * (a/2) * (b/2) = ab/8 = 12ch
where c = AB i.e. a hypotenuse. So,
r = h = ab/4c = ab/4?(a^2/4 + b^2/4) = ab/2?(a^2+b^2)
and therefore area of the circle is
A = ? * r^2 = ? a^2 b^2 /4(a2 + b2)
Below is the implementation of above approach:
C++
// C++ Program to find the area of the circle // which can be inscribed within the rhombus #include <bits/stdc++.h> using namespace std; // Function to find the area // of the inscribed circle float circlearea( float a, float b) { // the diagonals cannot be negative if (a < 0 || b < 0) return -1; // area of the circle float A = (3.14 * pow (a, 2) * pow (b, 2)) / (4 * ( pow (a, 2) + pow (b, 2))); return A; } // Driver code int main() { float a = 8, b = 10; cout << circlearea(a, b) << endl; return 0; } |
Java
// Java Program to find the area of the circle // which can be inscribed within the rhombus public class GFG { // Function to find the area // of the inscribed circle public static float circlearea( double a, double b) { // the diagonals cannot be negative if (a < 0 || b < 0 ) return - 1 ; //area of the circle float A = ( float ) (( 3.14 * Math.pow(a, 2 ) * Math.pow(b, 2 )) / ( 4 * (Math.pow(a, 2 ) + Math.pow(b, 2 )))) ; return A ; } // Driver code public static void main(String[] args) { float a = 8 , b = 10 ; System.out.println(circlearea(a, b)); } // This code is contributed by ANKITRAI1 } |
Python 3
# Python 3 Program to find the area of the circle # which can be inscribed within the rhombus # Function to find the area # of the inscribed circle def circlearea(a, b): # the diagonals cannot be negative if (a < 0 or b < 0 ): return - 1 # area of the circle A = (( 3.14 * pow (a, 2 ) * pow (b, 2 )) / ( 4 * ( pow (a, 2 ) + pow (b, 2 )))) return A # Driver code if __name__ = = "__main__" : a = 8 b = 10 print ( circlearea(a, b)) # This code is contributed by ChitraNayal |
C#
// C# Program to find the area of the circle // which can be inscribed within the rhombus using System; public class GFG { // Function to find the area // of the inscribed circle public static float circlearea( double a, double b) { // the diagonals cannot be negative if (a < 0 || b < 0) return -1 ; //area of the circle float A = ( float ) ((3.14 * Math.Pow(a, 2) * Math.Pow(b, 2)) / (4 * (Math.Pow(a, 2) + Math.Pow(b, 2)))) ; return A ; } // Driver code public static void Main() { float a = 8, b = 10 ; Console.WriteLine(circlearea(a, b)); } // This code is contributed by inder_verma.. } |
PHP
<?php // PHP Program to find the area // of the circle which can be // inscribed within the rhombus // Function to find the area // of the inscribed circle function circlearea( $a , $b ) { // the diagonals cannot be negative if ( $a < 0 || $b < 0) return -1; // area of the circle $A = (3.14 * pow( $a , 2) * pow( $b , 2)) / (4 * (pow( $a , 2) + pow( $b , 2))); return $A ; } // Driver code $a = 8; $b = 10; echo circlearea( $a , $b ); // This code is contributed by anuj_67 ?> |
Javascript
<script> // javascript Program to find the area of the circle // which can be inscribed within the rhombus // Function to find the area // of the inscribed circle function circlearea(a , b) { // the diagonals cannot be negative if (a < 0 || b < 0) return -1 ; //area of the circle var A = ((3.14 * Math.pow(a, 2) * Math.pow(b, 2)) / (4 * (Math.pow(a, 2) + Math.pow(b, 2)))) ; return A ; } // Driver code var a = 8, b = 10 ; document.write(circlearea(a, b).toFixed(4)); // This code is contributed by Amit Katiyar </script> |
30.6341
Time Complexity: O(1), as calculating squares using pow function is a constant time operation.
Auxiliary Space: O(1), as no extra space is required
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!