给定一个边长为a的N边正多边形。任务是找到多边形的面积。
例子:
Input : N = 6, a = 9
Output : 210.444
Input : N = 7, a = 8
Output : 232.571
方法:在上图中,我们看到多边形可以分成N个相等的三角形。查看其中一个三角形,我们看到中心处的整个角度可以分为 = 360/N
所以,角度t = 180/n
现在, tan(t) = a/2*h
所以, h = a/(2*tan(t))
每个三角形的面积 = (base * height)/2 = a * a/(4*tan(t))
所以,多边形的面积,
A = n * (area of one triangle) = a2 * n/(4tan t)
下面是上述方法的实现:
C++
// C++ Program to find the area of a regular
// polygon with given side length
#include
using namespace std;
// Function to find the area
// of a regular polygon
float polyarea(float n, float a)
{
// Side and side length cannot be negative
if (a < 0 && n < 0)
return -1;
// Area
// degree converted to radians
float A = (a * a * n) / (4 * tan((180 / n) * 3.14159 / 180));
return A;
}
// Driver code
int main()
{
float a = 9, n = 6;
cout << polyarea(n, a) << endl;
return 0;
}
Java
// Java Program to find the area of a regular
// polygon with given side length
import java.io.*;
class GFG {
// Function to find the area
// of a regular polygon
static float polyarea(float n, float a)
{
// Side and side length cannot be negative
if (a < 0 && n < 0)
return -1;
// Area
// degree converted to radians
float A = (a * a * n) /(float) (4 * Math.tan((180 / n) * 3.14159 / 180));
return A;
}
// Driver code
public static void main (String[] args) {
float a = 9, n = 6;
System.out.println( polyarea(n, a));
}
}
// This code is contributed by inder_verma..
Python3
# Python 3 Program to find the area
# of a regular polygon with given
# side length
from math import tan
# Function to find the area of a
# regular polygon
def polyarea(n, a):
# Side and side length cannot
# be negative
if (a < 0 and n < 0):
return -1
# Area degree converted to radians
A = (a * a * n) / (4 * tan((180 / n) *
3.14159 / 180))
return A
# Driver code
if __name__ == '__main__':
a = 9
n = 6
print('{0:.6}'.format(polyarea(n, a)))
# This code is contributed by
# Shashank_sharma
C#
// C# Program to find the area of a regular
// polygon with given side length
using System;
class GFG
{
// Function to find the area
// of a regular polygon
static float polyarea(float n, float a)
{
// Side and side length cannot be negative
if (a < 0 && n < 0)
return -1;
// Area
// degree converted to radians
float A = (a * a * n) / (float)(4 * Math.Tan((180 / n) *
3.14159 / 180));
return A;
}
// Driver code
public static void Main ()
{
float a = 9, n = 6;
Console.WriteLine(polyarea(n, a));
}
}
// This code is contributed
// by Akanksha Rai
PHP
Javascript
输出:
210.444