[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

Để lại một bình luận

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 *