分数类(雏形)

来源:互联网 发布:监测数据造假怎么举报 编辑:程序博客网 时间:2024/06/06 19:43

设计一个简单的分数类,完成对分数的几个运算。

#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);   //输出:以8/6为例,style为0时,原样输出8/6;                            //style为1时,输出化简后形式4/3;                            //style为2时,输出1(1/3)形式,表示一又三分之一;                            //style为3时,用小数形式输出,如1.3333;                            //默认方式0int fac(int x,int y);};void CFraction::amplify(int n){nume*=n;}void CFraction::simplify(){int n=fac(nume,deno);nume/=n;deno/=n;}int CFraction::fac(int x,int y){int n;if(x==0){return y;}while(n=x%y){y=n;x=y;}return y;}CFraction::CFraction(int nu,int de){nume=nu;deno=de;}void CFraction::input(){int nu,de;char ch;while(1){cin>>nu>>ch>>de;if(ch!='/')cout<<"输入格式有误"<<endl;else if(!de)cout<<"分母不能为零"<<endl;else{nume=nu;deno=de;break;}}}void CFraction::set(int nu,int de){nume=nu;deno=de;}void CFraction::output(int style){if(nume>deno){int n=fac(nume,deno);if(style==0)cout<<nume<<'/'<<deno<<endl;if(style==1)cout<<nume/n<<'/'<<deno/n<<endl;if(style==2){if(nume%deno==0)cout<<nume/deno<<endl;elsecout<<nume/deno<<'('<<(nume-nume/deno*deno)<<'/'<<deno/n<<')'<<endl;}if(style==3)cout<<(double)nume/(double)deno<<endl;}else{if(style==0)cout<<nume<<'/'<<deno<<endl;if(style==1)cout<<nume<<'/'<<deno<<endl;if(style==2)cout<<nume<<'/'<<deno<<endl;if(style==3)cout<<(double)nume/(double)deno<<endl;}}void main(){CFraction f1;f1.set();f1.input();cout<<"原样输出:";f1.output(0);cout<<"化简输出:";f1.output(1);cout<<"带分数输出:";f1.output(2);cout<<"小数输出:";f1.output(3);cout<<"分子扩大五倍:"<<endl;f1.amplify(5);cout<<"原样输出:";f1.output(0);cout<<"化简输出:";f1.output(1);cout<<"带分数输出:";f1.output(2);cout<<"小数输出:";f1.output(3);}

大的标题叫做类的组合,静态存储,还是不能理解类的组合是什么,今天把自己的想法说到了群里,就问类的组合是不是类的嵌套,我的意思是说有两个类,类1的成员是类2的对象,问了之后有人告诉我那叫做多态,关于类只有继承关系。之后又百度,说类的组合就是很多个类组合到一起,但觉得还是不对。更有大神说多态主要是指virtual,还是一片茫然,之后有人告诉我说的是继承和派生,多态指的是虚函数。但不知道这些,还是把这个题目完成了,但很困难,原因归结一些算法不是太容易想到,所以代码改了好几遍。


0 0
原创粉丝点击