第六周项目1:分数的雏形

来源:互联网 发布:知乎jennyyy照片 编辑:程序博客网 时间:2024/04/29 21:10

问题及代码:

/**copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:test.cpp*作者:崔青青*完成日期:2016年4月1日*问题描述:设计一个简单的分数类,完成对分数的几个运算。*输入:*程序输出:*/#include <iostream>using namespace std;class cfraction{private:    int nume;    int deno;public:    cfraction(int nu,int de);    void set1(int nu,int de);    void input();    void simplify();    void amplify(int n);    void output(int style=0);    int gcd(int x,int y);};cfraction::cfraction(int nu=0,int de=1){    nume=nu;    deno=de;}void cfraction::input(){    char ch;    while(1)    {        cout<<"请输入分数的正确形式:"<<endl;        cin>>nume>>ch>>deno;        if(ch!='/')        cout<<"格式错误,请重新输入"<<endl;        if(deno==0)        cout<<"输入有误,请重新输入:"<<endl;        else            break;    }}void cfraction::set1(int nu=0,int de=1){    nume=nu;    deno=de;}void cfraction::simplify(){    int g;    g=gcd(nume,deno);    nume=nume/g;    deno=deno/g;}void cfraction::amplify(int n){    nume=nume*n;}void cfraction::output(int style){    if(style==0)        cout<<nume<<'/'<<deno<<endl;    else if(style==1)    {         simplify();         cout<<nume<<'/'<<deno<<endl;    }     else if(style==2)    {        if(nume%deno==0)            cout<<nume/deno<<endl;        else if(nume<deno)         cout<<nume<<'/'<<deno<<endl;         else if(nume>deno)         {             int a;              simplify();              a=nume/deno;              nume=nume-a*deno;              cout<<a<<'('<<nume<<'/'<<deno<<')'<<endl;         }         else            cout<<1;    }    else if(style==3)    {        float f;        f=(float)nume/deno;        cout<<f<<endl;    }}int cfraction::gcd(int x,int y){    if(x%y==0)        return y;    else        return gcd(y,x%y);}int main(){    int style,a,b,n;    char ch1;    cout<<"请选择输出的格式:"<<endl;    cin>>style;    cfraction c(8,12);    c.output(style);    cout<<"请选择输出的格式:"<<endl;    cin>>style;    c.input();    c.simplify();    c.output(style);    cout<<"请选择输出的格式:"<<endl;    cin>>style;    cout<<"请输入放大的倍数:"<<endl;    cin>>n;    c.amplify(n);    c.output(style);    cout<<"请选择输出的格式:"<<endl;    cin>>style;    cout<<"请输入重置的数:"<<endl;    while(1)    {        cout<<"请输入分数的正确形式:"<<endl;        cin>>a>>ch1>>b;        if(ch1!='/')        cout<<"格式错误,请重新输入"<<endl;        if(b==0)        cout<<"输入有误,请重新输入:"<<endl;        else            break;    }    c.set1(a,b);    c.simplify();    c.output(style);    return 0;}

运行结果:

知识点总结:

对类的掌握,对构造函数的掌握。

学习心得:

通过编写这个程序,巩固了基于对象编程的方法。

0 0
原创粉丝点击