第四周项目二 分数问题

来源:互联网 发布:剑三异瞳萝莉捏脸数据 编辑:程序博客网 时间:2024/06/05 19:06

问题及代码

*ALL rights reserved.              *文件名称: 初学对象4         *作者:李长鸿          *完成时间:2015.4.8        *问题描述:分数问题           */     #include <iostream>#include <iostream>using namespace std;class CFraction{private:    int nume,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);};CFraction::CFraction(int nu,int de):nume(nu),deno(de) {}void CFraction::set(int nu,int de){    nume=nu;    deno=de;}void CFraction::input(){    char c;    int a,b;    while(cin>>a>>c>>b)    {        if(c!='/'||b==0)        {            cout<<"输入有误,请重新输入:"<<endl;            continue;        }        else break;    }    set(a,b);}void CFraction::simplify(){    int i=2;    while(i<=deno&&i<=nume)    {        if(nume%i==0&&deno%i==0)        {            nume=nume/i;            deno=deno/i;            continue;        }        i++;    }}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;        if((nume%deno)!=0)        {            nume=nume%deno;            simplify();            cout<<'('<<nume<<'/'<<deno<<')'<<endl;        }    }    else cout<<nume/double(deno)<<endl;}int main(){    CFraction CF;    int i;    cout<<"如果要改变分数,请输入1;如果不改变,请输入其他的数:"<<endl;    cin>>i;    if(i==1)    {        cout<<"请输入分数:"<<endl;        CF.input();    }    cout<<"如果要扩大分数的倍数,请输入1;如果不改变,请输入其他的数:"<<endl;    cin>>i;    if(i==1)    {        int n;        cout<<"请输入您想扩大的倍数n: n=";        cin>>n;        CF.amplify(n);    }    cout<<"输出原型请输入0;化简请输入1;加法形式请输入2;小数形式请输入3:"<<endl;    cin>>i;    CF.output(i);    return 0;}


总结:我想的太复杂了!!上周上机做了两节课,细节不对,下午又做了很久,还是有地方不对,然后就烦了,一周没去理它,也没兴趣去写程序,感觉头闷,烦躁。结果刚又拿出来看————轻轻松松就改对了!!!if ((nume%deno)!=0) { nume=nume%deno; simplify(); cout<<'('<<nume<<'/'<<deno<<')'<<endl; }老是不对,我就郁闷——明明我有if啊,怎么还会输出1(0/2)这种数??结果刚一看,if((nume%deno)!=0);——有个“,会对才怪!!唉。。。。

0 0
原创粉丝点击