分数类的雏形

来源:互联网 发布:生了二胎 才知熊猫血 编辑:程序博客网 时间:2024/04/30 10:07
/* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:main.cpp * 作    者:胡庆龙 * 完成日期:2016年4月8日 * 版 本 号:v1.0 * * 问题描述:设计一个简单的分数类,完成对分数的几个运算。 */#include<iostream>using namespace std;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();               //按照"nu/de"的格式,如"5/2"的形式输入        void simplify();            //化简(使分子分母没有公因子)        void amplify(int n);        //放大n倍,如2/3放大5倍为10/3        void output(int style=0);   //输出:以8/6为例,style为0时,原样输出8/6;                                //style为1时,输出化简后形式4/3;                                //style为2时,输出1(1/3)形式,表示一又三分之一;                                //style为3时,用小数形式输出,如1.3333;                                //默认方式0};CFraction::CFraction(int nu,int de){    nume=nu;    deno=de;}void CFraction::input(){    int nu,de;    char a;    cin>>nu>>a>>de;    if(de!=0)    {        nume=nu;        deno=de;    }    else        cout<<"输入有误";}void CFraction::simplify(){    int t;    int a=nume,b=deno;    while(b!=0)    {        t=a%b;        a=b;        b=t;    }    nume=nume/a;    deno=deno/a;}void CFraction::set(int nu,int de){    if(de!=0)    {       nume=nu;        deno=de;    }    else        cout<<"置值错误";}void CFraction::amplify(int n){    nume=nume*n;}void CFraction::output(int style){    if(style==1)        cout<<nume<<"/"<<deno<<endl;    else if(style==2)        cout<<nume/deno<<"("<<nume-(nume/deno)*deno<<"/"<<deno<<")"<<endl;    else if(style==3)        cout<<float(nume)/deno<<endl;}int main(){    CFraction cf;    cf.set(4,6);    cf.simplify();    cf.amplify(2);    cf.output(1);    cf.output(2);    cf.output(3);    return 0;}

0 0
原创粉丝点击