বিভিন্ন ত্রিভুজের একটি অ্যারে দেওয়া থাকলে, যেখানে প্রতিটি ত্রিভুজের তিন পার্শ্ব [a, b, c] আকারে সংরক্ষিত আছে, তাদের ক্ষেত্রফল অনুযায়ী সাজাতে হবে। হেরনের সূত্র অনুযায়ী ত্রিভুজের ক্ষেত্রফল = √[p(p-a)(p-b)(p-c)], যেখানে p = (a+b+c)/2 (আর্ধ-পরিসীমা)।
উদাহরণ
ইনপুট: (7, 24, 25), (5, 12, 13), (3, 4, 5)
আউটপুট: (3, 4, 5), (5, 12, 13), (7, 24, 25) — ক্ষেত্রফল ক্রমে 6, 30, 84।
এলগরিদম
- একটি
struct Triangleডিফাইন করুন যাতে তিনটি পূর্ণসংখ্যাa, b, cথাকে। - একটি
square()ফাংশন লিখুন যা16 × ক্ষেত্রফল²ফেরত দেয় (স কেয়ার রুট এড়াতে):(a+b+c)(a+b-c)(a-b+c)(-a+b+c) - বাবল সোর্ট বা যেকোনো সর্টিং অ্যালগরিদম ব্যবহার করে
square()মান অনুযায়ী ত্রিভুজগুলো সাজান। - সাজানো ত্রিভুজগুলো প্রিন্ট করুন।
C কোড উদাহরণ
#include <stdio.h>
#define N 3
struct Triangle {
int a, b, c;
};
int square(struct Triangle t) {
int a = t.a, b = t.b, c = t.c;
return (a + b + c) * (a + b - c) * (a - b + c) * (-a + b + c);
}
void solve(struct Triangle* a) {
for (int i = 0; i < N; i++)
for (int j = i + 1; j < N; j++)
if (square(a[i]) > square(a[j])) {
struct Triangle temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
int main() {
struct Triangle triangles[N] = {{7, 24, 25}, {5, 12, 13}, {3, 4, 5}};
solve(triangles);
for (int i = 0; i < N; i++)
printf("(%d, %d, %d)\n", triangles[i].a, triangles[i].b, triangles[i].c);
return 0;
}
ইনপুট ও আউটপুট
ইনপুট: {{7, 24, 25}, {5, 12, 13}, {3, 4, 5}}
আউটপুট: (3, 4, 5) (5, 12, 13) (7, 24, 25)