ধরুন আমাদের কাছে বিভিন্ন ত্রিভুজের একটি বিন্যাস রয়েছে যেখানে ত্রিভুজ[i] =[ai, bi, ci] এগুলি ith ত্রিভুজের বাহু। আমাদের ত্রিভুজগুলিকে তাদের ক্ষেত্রফলের উপর ভিত্তি করে সাজাতে হবে। বাহু ব্যবহার করে একটি ত্রিভুজের ক্ষেত্রফল হল: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)
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- a, b এবং c বাহু দিয়ে ত্রিভুজ বস্তুর সংজ্ঞা দাও
- একটি ফাংশন বর্গক্ষেত্র সংজ্ঞায়িত করুন, এটি ত্রিভুজ টি নেবে,
- a :=t.a
- b :=t.b
- c :=t.c
- রিটার্ন (a + b + c) * (a + b - c) * (a - b + c) * (-a + b + c)
- প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন:
- আরম্ভ করার জন্য i :=0, যখন i
- j শুরু করার জন্য :=i + 1, যখন j
- যদি বর্গ(a[i])> বর্গক্ষেত্র(a[j]), তারপর:
- a[i] এবং a[j] অদলবদল করুন
- j শুরু করার জন্য :=i + 1, যখন j
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#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); } }
ইনপুট
{{7, 24, 25}, {5, 12, 13}, {3, 4, 5}}
আউটপুট
(3, 4, 5) (5, 12, 13) (7, 24, 25)