简单程序

来源:互联网 发布:图片剪裁软件 编辑:程序博客网 时间:2024/06/15 23:36

1. 处理有理数工具

//Simplist function summarystruct rationT{    int num;    int den;};rationT detra(rationT r1){    int i = 0;    int m, d;    if (r1.den > r1.num)    {        m = r1.num;        d = r1.den;    }    else    {        m = r1.den;        d = r1.num;    }    while (true)    {        i = d%m;        if (i == 0)break;        d = m; m = i;    }    r1.num /= m;    r1.den /= m;    return r1;}rationT creater(int num,int den){    rationT r1 = { num,den };//需要等号?    r1 = detra(r1);    return r1;//如何处理结构体的引用,在这里是否有必要}rationT add(rationT r1, rationT r2){    int num = r1.den*r2.num + r2.den*r1.num;    int den = r1.den*r2.den;    rationT r = { num,den };    return detra(r);}rationT mulp(rationT r1, rationT r2){    int num = r1.num*r2.num;    int den = r1.den*r2.den;    rationT r = { num,den };    return detra(r);}double getra(rationT r1){    return r1.num*10.0/10/r1.den ;}void print(rationT r1){    cout << r1.num << "/" << r1.den << endl;}int main(){    rationT r1, r2, r3, r4;    r1 = creater(89, 695);    r2 = creater(39, 156);    r3 = add(r1, r2);    r4 = mulp(r1, r2);    cout<<getra(r3)<<endl;    print(r4);    print(r2);    return 0;}