मान लीजिए कि हमारे पास विभिन्न त्रिभुजों की एक सरणी है जहाँ त्रिभुज [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)
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- ए, बी और सी भुजाओं वाली त्रिभुज वस्तु को परिभाषित करें
- एक फ़ंक्शन को परिभाषित करें वर्ग(), इसमें त्रिभुज t लगेगा,
- a :=t.a
- b :=t.b
- c :=t.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)