Cho 2 phân số với tử/mẫu số. So sánh và tìm phân số lớn hơn.
Ví dụ
Đầu vào - 2/3 và 4/3
Đầu ra - 4/3
Giải thích - 2/3 ≈ 0.667 < 4/3 ≈ 1.333
Đầu vào - 1/2 và 4/3
Đầu ra - 4/3
Phương pháp
- So sánh a/b và c/d bằng phép nhân chéo: a×d vs b×c
- Nếu a×d - b×c > 0 → phân số 1 lớn hơn
- Ngược lại phân số 2 lớn hơn
- Tránh chia thực số, chính xác hơn
Chương trình mẫu
#include <stdio.h>
struct Fraction {
int nume, deno;
};
struct Fraction greater(struct Fraction f1, struct Fraction f2) {
int Y = f1.nume * f2.deno - f1.deno * f2.nume;
return (Y > 0) ? f1 : f2;
}
int main() {
struct Fraction f1 = {4, 5};
struct Fraction f2 = {3, 4};
struct Fraction res = greater(f1, f2);
printf("Phân số lớn hơn: %d/%d\n", res.nume, res.deno);
return 0;
}
Kết quả
Phân số lớn hơn: 4/5
Giải thích: 4/5 = 0.8 > 3/4 = 0.75