N 분수의 분자 수와 분모 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에 저장할 수 있습니다. 이 변수는 각각 최종 분모와 최종 분자가 됩니다. 이제 축소된 형태를 찾아야 하므로 GCD를 찾아야 합니다. (최대 공약수) prod_num과 prod_den을 나누고 prod_num과 prod_den을 각각의 GCD로 나눕니다.
알고리즘
Start Declare a struct fraction with following elements 1. num, 2. den In function int GCD(int a, int b) Step 1→ If a == 0 then, Return b Step 2→ Return GCD(b % a, a) In function int product(int n, fraction f[]) Step 1→ Initialize prod_num = 1 prod_den = 1 Step 2→ Loop For i = 0; i < n; i++ prod_num = prod_num * f[i].num prod_den = prod_den * f[i].den Step 3→ Declare and initialize gcd = GCD(prod_num, prod_den) Step 4→ prod_num = prod_num / gcd Step 5→ prod_den = prod_den / gcd Step 6→ Print prod_num, prod_den In Function int main() Step 1→ Declare struct fraction f[3] = { {1,2}, {2,1}, {5,6}} Step 2→ Declare and initialization n as sizeof(f)/sizeof(f[0]) Step 3→ product(n, f) Stop
예시
#include <stdio.h> struct fraction{ int num; int den; }; // Function to return gcd of a and b int GCD(int a, int b){ if (a == 0) return b; return GCD(b % a, a); } //fucntion to print the result int product(int n, fraction f[]){ int prod_num = 1, prod_den = 1; // finding the product of all N // numerators and denominators. for (int i = 0; i < n; i++) { prod_num *= f[i].num; prod_den *= f[i].den; } // Finding GCD of new numerator and // denominator int gcd = GCD(prod_num, prod_den); // finding reduced form 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