[Struct C++] Viết chương trình nhập vào nhiều phân số và tính tổng các phân số đó

1. Tính tổng phân số c++

Đề bài: Bạn hãy viết chương trình nhập vào vào N phân số, và tính tổng các phân số đó. Kết quả bài toán phải là phân số tối giản và phải dùng kiểu dữ liệu cấu trúc.

Ví dụ:

N=2

1/3+ 2/6 = 2/3

2. Code Tính tổng phân số c++

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

struct ps
{
    int tu;
    int mau;
};

ps a[100];
int n;

void nhap()
{
    freopen("test.inp", "r", stdin);
    cin>> n;
    for (int i=1; i<=n; i++)
        cin >> a[i].tu>>a[i].mau;
}

void xuat()
{
    for (int i=1; i<=n; i++)
        cout << a[i].tu<< "/" <<a[i].mau<<endl;
}

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


ps tongps()
{
    int i,z;
    ps tmp=a[1];
    for (i=2; i<=n; i++)
    {
        tmp.tu = tmp.tu*a[i].mau + tmp.mau*a[i].tu;
        tmp.mau = tmp.mau*a[i].mau;
        z=ucln(tmp.tu, tmp.mau);
        tmp.tu /=z;
        tmp.mau /=z;
    }
    return tmp;
}


void xuli()
{
    ps tong = tongps();
    cout << "Tong PS = "<<tong.tu<< "/"<< tong.mau;
}

int main()
{
    nhap();
    xuat();
    xuli();
    return 0;
}

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 *