给定一个对角线为a和b的菱形,其中包含一个内切圆。任务是根据 a 和 b 找到该圆的面积。
例子:
Input: l = 5, b = 6
Output: 11.582
Input: l = 8, b = 10
Output: 30.6341
处理方法:从图中可以看出,内切圆的半径也是直角三角形AOB的高h=OH 。为了找到它,我们使用三角形面积方程:
Area AOB = 1/2 * (a/2) * (b/2) = ab/8 = 12ch
其中c = AB即斜边。所以,
r = h = ab/4c = ab/4√(a^2/4 + b^2/4) = ab/2√(a^2+b^2)
因此圆的面积是
A = Π * r^2 = Π a^2 b^2 /4(a2 + b2)
下面是上述方法的实现:
C++
// C++ Program to find the area of the circle
// which can be inscribed within the rhombus
#include
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
Javascript
输出:
30.6341