N भिन्नों के अंश num और हर den दिए गए हैं, कार्य N भिन्नों का गुणनफल ढूंढना है और आउटपुट सरलतम रूप में होना चाहिए।
जैसे नीचे दी गई आकृति में हमारे पास दो भिन्न "4/5" और "3/4" हैं, हमने उन दो भिन्नों का गुणनफल ढूंढा जहां पहले का अंश दूसरे के अंश से गुणा होता है और पहले का हर दूसरे के हर से गुणा होता है। अब अंतिम परिणाम "12/20" है जिसे सरल किया जा सकता है इसलिए आउटपुट "3/5" होगा। इसी तरह हमें दी गई समस्या को हल करने के लिए एक प्रोग्राम विकसित करना होगा।

इनपुट
fraction f[3] = {{1,2}, {2,1}, {5,6}} आउटपुट
5/6
व्याख्या
1/2 * 2/1 * 5/6 = 10/12 इसलिए हम इसे 5/6 के रूप में सरल कर सकते हैं।
इनपुट
fraction f[2] = {{2, 3}, {1,4}} आउटपुट
1/6
व्याख्या
2/3 * 1/4 = 2/12 जिसे 1/6 के रूप में सरल किया जा सकता है।
उपयोग किया गया दृष्टिकोण
उपरोक्त समस्या को हल करने के लिए हम सभी हरों और अंशों का गुणनफल कर सकते हैं, परिणाम को अन्य चरों prod_den और prod_num में संग्रहीत कर सकते हैं जो अंतिम हर और अंतिम अंश होंगे। अब हमें सरलतम रूप ढूंढना है, उसके लिए हमें prod_num और prod_den का GCD (महत्तम समापवर्तक) ढूंढना होगा और prod_num और prod_den को उनके संबंधित GCD से विभाजित करना होगा।
एल्गोरिदम
शुरू एक struct fraction घोषित करें जिसमें निम्नलिखित तत्व हों 1. num, 2. den फ़ंक्शन int GCD(int a, int b) में चरण 1 → यदि a == 0 तो, b लौटाएं चरण 2 → GCD(b % a, a) लौटाएं फ़ंक्शन int product(int n, fraction f[]) में चरण 1 → prod_num = 1, prod_den = 1 प्रारंभ करें चरण 2 → लूप i = 0; i < n; i++ के लिए prod_num = prod_num * f[i].num prod_den = prod_den * f[i].den चरण 3 → gcd = GCD(prod_num, prod_den) घोषित और प्रारंभ करें चरण 4 → prod_num = prod_num / gcd चरण 5 → prod_den = prod_den / gcd चरण 6 → prod_num, prod_den प्रिंट करें फ़ंक्शन int main() में चरण 1 → struct fraction f[3] = { {1,2}, {2,1}, {5,6}} घोषित करें चरण 2 → n को sizeof(f)/sizeof(f[0]) के रूप में घोषित और प्रारंभ करें चरण 3 → product(n, f) कॉल करें रुकें उदाहरण
#include <stdio.h> struct fraction{ int num; int den; }; // a और b का gcd लौटाने वाला फ़ंक्शन int GCD(int a, int b){ if (a == 0) return b; return GCD(b % a, a); } // परिणाम प्रिंट करने वाला फ़ंक्शन int product(int n, fraction f[]){ int prod_num = 1, prod_den = 1; // सभी N अंशों और हरों का गुणनफल ढूंढना for (int i = 0; i < n; i++) { prod_num *= f[i].num; prod_den *= f[i].den; } // नए अंश और हर का GCD ढूंढना int gcd = GCD(prod_num, prod_den); // सरलतम रूप ढूंढना prod_num /= gcd; prod_den /= gcd; printf("%d/%d\n", prod_num, prod_den); return 0; } int main(){ struct fraction f[3] = { {1,2}, {2,1}, {5,6}}; int n = sizeof(f)/sizeof(f[0]); product(n, f); return 0; } आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:
5/6