ได้รับตัวเศษ num และตัวส่วน den ของ N เศษส่วน งานคือหาผลคูณของ 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
วิธีการแก้ปัญหา
เพื่อแก้ปัญหานี้ เราสามารถคูณตัวส่วนและตัวเศษทั้งหมด เก็บผลลัพธ์ในตัวแปร prod_den และ prod_num ซึ่งจะเป็นตัวส่วนและตัวเศษสุดท้าย ต่อมาเราต้องหารูปแบบลดรูป โดยหาตัวหารร่วมมาก (GCD) ของ prod_num และ prod_den แล้วหาร prod_num และ prod_den ด้วย GCD ของแต่ละตัว
อัลกอริทึม
Start
ประกาศ struct fraction มีสมาชิก
1. num, 2. den
In function int GCD(int a, int b)
Step 1: ถ้า a == 0 แล้ว Return b
Step 2: Return GCD(b % a, a)
In function int product(int n, fraction f[])
Step 1: กำหนด 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: ประกาศและกำหนด 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: ประกาศ struct fraction f[3] = {{1,2}, {2,1}, {5,6}}
Step 2: ประกาศและกำหนด n เป็น sizeof(f)/sizeof(f[0])
Step 3: product(n, f)
Stop
ตัวอย่างโค้ด
#include <stdio.h>
struct fraction {
int num;
int den;
};
// ฟังก์ชันคืนค่า GCD ของ a และ b
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