第五周任务二分数类

来源:互联网 发布:手机怎么登陆淘宝店铺 编辑:程序博客网 时间:2024/04/28 07:11
/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称: 分数类                          * 作    者: 刘杨                           * 完成日期: 2012 年 3 月 21 日* 版 本 号:         * 对任务及求解方法的描述部分* 输入描述:* 问题描述:* 程序输出:* 程序头部的注释结束*/#include<iostream>using namespace std;int gcd(int a,int b);class CFraction{private:    int nume;  // 分子int deno;  // 分母public:CFraction(int nu = 0,int de = 1);   void Set(int nu = 0,int de = 1);    void input();void Simplify();void amplify(int n);void output(int style=0);};int main(){CFraction cfrac1;cfrac1.output(0);    cfrac1.Set(2,3);cfrac1.output(0);CFraction cfrac2;cfrac2.input();cfrac2.Simplify();cfrac2.output(0);cfrac2.amplify(2);cfrac2.output(0);cfrac2.output(1);cfrac2.output(2);system("pause");return 0;}//构造函数CFraction::CFraction(int nu, int de){nume = nu;deno = de;}//改变分数的值void CFraction::Set(int nu, int de){nume = nu;deno = de;return ;}//输出分数void CFraction::input(){char c1;cout << "请输入分数(格式 nu/de):";while(1){cin >> nume >> c1 >> deno;if(c1 != '/'){cout << "格式不正确,请重新输入" << endl;}else if(deno == 0){cout << "分母不能为零,请重新输入" << endl;}else break;}return ;}//化简,使分子分母没有公因子void CFraction::Simplify(){int i;    i=gcd(nume,deno);    nume = nume / i;deno = deno / i;    return;}void CFraction::amplify(int n){nume = nume * n;return ;}//输出分数void CFraction::output(int style){int n,c1,nu,de;switch(style){case '0':cout << nume << "/" << deno << endl;break;case 1:c1 = gcd(nume,deno);nu = nume / c1;de = deno / c1;cout << nu << "/" << de << endl;break;case 2:c1 = gcd(nume,deno);nu = nume / c1;de = deno / c1;n = nu / de;nu = nu % de;cout << n << "(" << nu << "/" << de << ")" << endl;break;default:cout << nume << "/" << deno << endl;break;}return ;}int gcd(int x,int y){int t;while(y > 0){t = x % y;x = y;y = t;}return x;}
运行结果:

原创粉丝点击