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

หาค่าสูงสุดของจำนวนตรรกยะสองจำนวนใน C++

โจทย์

ได้รับ จำนวนตรรกยะ (Rational Numbers) สองจำนวนในรูป p/q ทางเราต้อง หาค่าสูงสุดของจำนวนตรรกยะทั้งสอง

ตัวอย่าง

Input: rat1 = 5/4, rat2 = 3/2

Output: 3/2

อธิบาย: 5/4 = 1.25, 3/2 = 1.5

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

ใช้วิธีหา ค่าต่ำสุดที่หารด้วยตัวส่วนทั้งสองได้ (L.C.M.):

  1. หา L.C.M. ของตัวส่วน
  2. ปรับตัวเศษให้มีตัวส่วนร่วมกัน
  3. เปรียบเทียบตัวเศษ ตัวที่ใหญ่กว่าคือจำนวนตรรกยะที่มากกว่า

โปรแกรมตัวอย่าง

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

int findLCM(int a, int b) {
    return (a * b) / (__gcd(a, b));
}

void maxRational(int ratOneNum, int ratOneDen, int ratTwoNum, int ratTwoDen) {
    int k = findLCM(ratOneDen, ratTwoDen);
    int oneNum = ratOneNum * k / ratOneDen;
    int twoNum = ratTwoNum * k / ratTwoDen;
    if (oneNum > twoNum)
        cout << ratOneNum << "/" << ratOneDen;
    else
        cout << ratTwoNum << "/" << ratTwoDen;
}

int main() {
    int ratOneNum = 5, ratOneDen = 4;
    int ratTwoNum = 3, ratTwoDen = 2;
    cout << "The maximum of the two rational Numbers is ";
    maxRational(ratOneNum, ratOneDen, ratTwoNum, ratTwoDen);
    return 0;
}

ผลลัพธ์

The maximum of the two rational Numbers is 3/2