[Struct] Cộng 2 phân số căn bản

Yêu cầu xây dựng cấu trúc Phân số (gồm tử và mẫu).

Viết chương trình nhập vào 2 phân số, yêu cầu xuất phân số tổng của 2 phân số đó (sau khi rút gọn ra màn hình)
Nếu input có phân số nào có mẫu bằng 0 thì xuất kết quả ra -1
ví dụ 1:
input
1 2
1 3
output
5/6
ví dụ 2:
input
1 2
1 0
output
-1

Link nộp bài: http://upcoder.hcmup.edu.vn/index.php/problems/submit/343/01e2663585613fe2026ef385bd7034dc/C%E1%BB%99ng_2_ph%C3%A2n_s%E1%BB%91

Code tham khảo:

#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;

struct phanso
{
    int tu;
    int mau;
};

phanso a,b, tong;

void nhapdl()
{
    cin >>a.tu >> a.mau;
    cin >>b.tu >> b.mau;
}

int ucln(int a, int b)
{
    int r;
    while (a%b!=0)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return b;
}

int main( )
{
    nhapdl();
    if (a.mau==0 || b.mau==0)
    {
        cout << "-1";
        return 0;
    }

    tong.tu = a.tu*b.mau + a.mau*b.tu;
    tong.mau = a.mau*b.mau;

    int UC = ucln(tong.tu,tong.mau);
    cout << tong.tu/UC << "/"<< tong.mau/UC;
}

 

Code tham khảo cộng 2 phân số, sử dụng toán tử

#include <iostream>
using namespace std;

class phanso
{
private:
    int tu, mau;

public:
    phanso(){}
    phanso operator+(phanso b);
    friend istream &operator >> (istream &in, phanso &ps);
    friend ostream &operator << (ostream &out, phanso ps);
};

istream &operator >> (istream &in, phanso &ps)
{
    in >> ps.tu >> ps.mau;
    return in;
}

ostream &operator << (ostream &out, phanso ps)
{
    if (ps.mau == 0)
        out << "-1";
    else
        out << ps.tu << "/" << ps.mau;
    return out;
}

int ucln(int a, int b)
{
    int r;
    while (b>0)
    {
        r = a%b;
        a = b;
        b = r;
    }
    return a;
}

phanso phanso::operator+(phanso b)
{
    phanso c;
    c.tu = tu*b.mau + mau*b.tu;
    c.mau = mau*b.mau;
    int z = ucln(c.tu, c.mau);
    c.tu /= z;
    c.mau /= z;
    return c;
}

int main()
{
    phanso a, b;
    cin >> a >> b;
    cout << a + b;
    return 0;
}

 

keywords: Bài tập căn bản liên quan đến cấu trúc struct

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *