Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ผลคูณของเศษส่วน N ที่กำหนดในรูปแบบลดลงใน C


จากจำนวนตัวเศษและตัวหารของเศษส่วน N ภารกิจคือการหาเศษส่วน N ผลคูณและผลลัพธ์ควรอยู่ในรูปแบบที่ลดลง

ดังรูปข้างล่างนี้ เรามีเศษส่วนสองส่วน ”4/5” และ “3/4” เราพบผลคูณของสองกลุ่มนั้น โดยที่ตัวเศษของตัวแรกคูณด้วยตัวเศษของวินาทีและตัวส่วนของตัวแรกจะคูณ ตัวส่วนของวินาที ตอนนี้ผลลัพธ์สุดท้ายคือ “12/20” ซึ่งสามารถลดลงได้ดังนั้นผลลัพธ์จะเป็น “3/5” เช่นเดียวกัน เราต้องพัฒนาโปรแกรมเพื่อแก้ปัญหาที่กำหนด

ผลคูณของเศษส่วน N ที่กำหนดในรูปแบบลดลงใน C

ป้อนข้อมูล

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