Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C에서 환원된 형태로 주어진 N 분획의 곱

<시간/>

N 분수의 분자 수와 분모 den이 주어지면 작업은 N 분수의 곱을 찾는 것이며 출력은 축소된 형식이어야 합니다.

아래 주어진 그림과 같이 두 개의 분수 "4/5"와 "3/4"가 있습니다. 여기서 첫 번째 분자에 두 번째 분자를 곱하고 첫 번째 분모에 곱하는 두 파벌의 곱을 찾았습니다. 두 번째의 분모. 이제 최종 결과는 "12/20"으로 줄일 수 있으므로 출력은 "3/5"가 됩니다. 마찬가지로 주어진 문제를 해결하기 위한 프로그램을 개발해야 합니다.

C에서 환원된 형태로 주어진 N 분획의 곱

입력

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