Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ลดเศษส่วนให้อยู่ในรูปแบบต่ำสุดใน C++

ภาพรวม

ได้รับจำนวนเต็มสองจำนวน Num1 และ Num2 สามารถแสดงเป็นเศษส่วน Num1/Num2 เป้าหมายคือลดเศษส่วนนี้ให้อยู่ในรูปแบบต่ำสุด (Lowest Terms)

ใช้ GCD หาตัวหารร่วมมาก

  • คำนวณ Greatest Common Divisor (GCD) ของทั้งสองจำนวน
  • หารทั้งสองจำนวนด้วย GCD นั้น
  • ตั้งค่าทั้งสองตัวแปรเป็นผลหาร
  • เศษส่วนต่ำสุดจะเป็น Num1/Num2

ตัวอย่าง

อินพุต − Num1 = 22, Num2 = 10

เอาต์พุต − Num1 = 11, Num2 = 5

Lowest Fraction: 11/5

คำอธิบาย − GCD ของ 22 และ 10 คือ 2

22/2 = 11, 10/2 = 5

เศษส่วนต่ำสุดคือ 11/5

อินพุต − Num1 = 36, Num2 = 40

เอาต์พุต − Num1 = 9, Num2 = 10

Lowest Fraction: 9/10

คำอธิบาย − GCD ของ 36 และ 40 คือ 4

40/4 = 10, 36/4 = 9

เศษส่วนต่ำสุดคือ 9/10

แนวทางการแก้ปัญหา

คำนวณ GCD แบบเรียกซ้ำ หารทั้งสองจำนวนด้วย GCD ได้ผลหาร นำมาเป็นเศษส่วนต่ำสุด

  • รับตัวแปร Num1 และ Num2
  • ฟังก์ชัน findGCD(int a, int b) คืน GCD แบบเรียกซ้ำ: หาก b==0 คืน a มิฉะนั้น คืน findGCD(b, a%b)
  • ฟังก์ชัน lowestFraction(int num1, int num2) พิมพ์เศษส่วนต่ำสุด
  • หา denom = findGCD(num1, num2)
  • ตั้ง num1 /= denom, num2 /= denom
  • พิมพ์ num1, num2 และเศษส่วน num1/num2

ตัวอย่างโค้ด C++

#include <bits/stdc++.h> 
using namespace std; 

int findGCD(int a, int b) { 
    if (b == 0) 
        return a; 
    return findGCD(b, a % b); 
} 

void lowestFraction(int num1, int num2){ 
    int denom = findGCD(num1, num2); 
    num1 /= denom; 
    num2 /= denom; 
    cout << "Num1 = " << num1 << endl; 
    cout << "Num2 = " << num2 << endl; 
    cout << "Lowest Fraction : " << num1 << "/" << num2; 
} 

int main(){ 
    int Num1 = 14; 
    int Num2 = 8; 
    lowestFraction(Num1, Num2); 
    return 0; 
}

ผลลัพธ์

Num1 = 7 Num2 = 4 Lowest Fraction : 7/4