إيجاد مساحة المثلث
اذهب إلى التنقل
اذهب إلى البحث
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
تحسب هذه الخوارزمية مساحة المثلث، وهناك طرق عديدة لحساب المساحة منها:
إيجاد المساحة باستخدام الأضلع المعطاة
مثال:
Input : a = 5, b = 7, c = 8
Output : Area of a triangle is 17.320508
Input : a = 3, b = 4, c = 5
Output : Area of a triangle is 6.000000
يمكن حساب مساحة المثلث باستخدام العلاقة الرياضية التالية:
Area = sqrt(s*(s-a)*(s-b)*(s-c))
تمثل a
و b
و c
أطوال أضلاع المثلث، وs = (a+b+c)/2
.
تنفيذ الخوارزمية
تعرض الأمثلة التالية طريقة تنفيذ الخوارزمية في عدد من لغات البرمجة:
- C++:
#include <bits/stdc++.h>
using namespace std;
float findArea(float a, float b, float c)
{
// يجب أن تكون أطوال الأضلاع قيمًا موجبة
// ويجب أن يكون مجموع طولي أيّ ضلعين أقل من طول الضلع الثالث
if (a < 0 || b < 0 || c < 0 ||
(a + b <= c) || a + c <= b ||
b + c <= a)
{
cout << "Not a valid trianglen";
exit(0);
}
float s = (a + b + c) / 2;
return sqrt(s * (s - a) *
(s - b) * (s - c));
}
// اختبار الدالة السابقة
int main()
{
float a = 3.0;
float b = 4.0;
float c = 5.0;
cout << "Area is " << findArea(a, b, c);
return 0;
}
- بايثون:
# يجب أن تكون أطوال الأضلاع قيمًا موجبة
# ويجب أن يكون مجموع طولي أيّ ضلعين أقل من طول الضلع الثالث
def findArea(a,b,c):
if (a < 0 or b < 0 or c < 0 or (a+b <= c) or (a+c <=b) or (b+c <=a) ):
print('Not a valid trianglen')
return
# حساب نصف المحيط
s = (a + b + c) / 2
# حساب المساحة
area = (s * (s - a) * (s - b) * (s - c)) ** 0.5
print('Area of a traingle is %f' %area)
# الضلع الأول
a = 3.0
# الضلع الثاني
b = 4.0
# الضلع الثالث
c = 5.0
findArea(a,b,c)
- جافا:
class Test
{
static float findArea(float a, float b, float c)
{
// يجب أن تكون أطوال الأضلاع قيمًا موجبة
// ويجب أن يكون مجموع طولي أيّ ضلعين أقل من طول الضلع الثالث
if (a < 0 || b < 0 || c <0 || (a+b <= c) ||
a+c <=b || b+c <=a)
{
System.out.println("Not a valid triangle");
System.exit(0);
}
float s = (a+b+c)/2;
return (float)Math.sqrt(s*(s-a)*(s-b)*(s-c));
}
// اختبار التابع السابق
public static void main(String[] args)
{
float a = 3.0f;
float b = 4.0f;
float c = 5.0f;
System.out.println("Area is " + findArea(a, b, c));
}
}
إيجاد المساحة بواسطة الإحداثيات
إن كانت إحداثيات أركان المثلث متوفّرة، فيمكن تطبيق العلاقة التالية (علاقة رباط الحذاء Shoelace formula) لحساب المساحة:
A = | 1/2 [ (x1y2 + x2y3 + ... + xn-1yn + xny1) - (x2y1 + x3y2 + ... + xnyn-1 + x1yn) ]
تنفيذ الخوارزمية
تعرض الأمثلة التالية طريقة تنفيذ الخوارزمية في عدد من لغات البرمجة:
- C++:
#include <bits/stdc++.h>
using namespace std;
// إحداثيات النقطة i ممثلّة بواسطة ([X[i], Y[i])
double polygonArea(double X[], double Y[], int n)
{
// تهيئة قيمة المساحة
double area = 0.0;
// حساب قيمة علاقة رباط الحذاء
int j = n - 1;
for (int i = 0; i < n; i++)
{
area += (X[j] + X[i]) * (Y[j] - Y[i]);
j = i; // j هو الرأس السابق للمتغير i
}
// تعيد الدالة قيمة مطلقة
return abs(area / 2.0);
}
// اختبار الدالة السابقة
int main()
{
double X[] = {0, 2, 4};
double Y[] = {1, 3, 7};
int n = sizeof(X)/sizeof(X[0]);
cout << polygonArea(X, Y, n);
}
- بايثون:
# إحداثيات النقطة i ممثلّة بواسطة ([X[i], Y[i])
def polygonArea(X,Y, n) :
# تهيئة قيمة المساحة
area = 0.0
# حساب قيمة علاقة رباط الحذاء
j = n - 1
for i in range( 0, n) :
area = area + (X[j] + X[i]) * (Y[j] - Y[i])
j = i # j هو الرأس السابق للمتغير i
# تعيد الدالة قيمة مطلقة
return abs(area // 2.0)
# اختبار الدالة السابقة
X = [0, 2, 4]
Y = [1, 3, 7]
n = len(X)
print(polygonArea(X, Y, n))
- جافا:
import java.io.*;
import java.math.*;
class GFG {
// إحداثيات النقطة i ممثلّة بواسطة ([X[i], Y[i])
static double polygonArea(double X[], double Y[], int n)
{
// تهيئة قيمة المساحة
double area = 0.0;
// حساب قيمة علاقة رباط الحذاء
int j = n - 1;
for (int i = 0; i < n; i++)
{
area += (X[j] + X[i]) * (Y[j] - Y[i]);
// j هو الرأس السابق للمتغير i
j = i;
}
// تعيد الدالة قيمة مطلقة
return Math.abs(area / 2.0);
}
// اختبار التابع السابق
public static void main (String[] args)
{
double X[] = {0, 2, 4};
double Y[] = {1, 3, 7};
int n = X.length;
System.out.println(polygonArea(X, Y, n));
}
}
مصادر
- صفحة Program to find area of a triangle في توثيق الخوارزميات في موقع GeeksforGeeks.