第五周 任务二

来源:互联网 发布:软件设计方案 评价 编辑:程序博客网 时间:2024/05/29 03:50

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:        lsan                      
* 作    者:            刘向一                  
* 完成日期:     2012   年   3    月   20     日
* 版 本 号:      V1.0   

* 对任务及求解方法的描述部分
* 输入描述: 
* 问题描述: 
* 程序输出: 
* 程序头部的注释结束
*/

#include<iostream>  

using namespace std; 

int gcd(int , int); 

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 t1;

t1.set(0,1);

t1.input();

t1.simplify();            

    t1.amplify(5);

t1.output(2);  

    cout<<endl;

system("pause");

return 0;  

}  

CFraction::CFraction(int nu,int de)  

{

if(de!=0)

{

nume = nu;

deno = de;

}

else

{

cerr<<"分母不能为零"<<endl;

exit(0);

}

}  

void CFraction::set(int nu,int de)  

{

if(de!=0)

{

nume = nu;

deno = de;

}

}  

void CFraction::input()                  

{

char c;  

    cout<<"请按照“nu/de”的格式输入一个分数:"; 

while(1)

{

cin>>nume>>c>>deno;

if(c!='/')

cout<<"格式不正确"<<endl;   

        else if(deno==0)

cout<<"分母不能为零"<<endl;

else

break;

}

}  

void CFraction::simplify()         

{   int n;

n=gcd(nume,deno);

nume=nume/n;

deno=deno/n;

cout<<"化简结果为:"<<nume<<'/'<<deno<<endl;

}  

void CFraction::amplify(int n)          

{

nume=nume*n;

cout<<"结果为:";

}  

void CFraction::output(int style)          

{

int i;

switch(style)

{

case 0:

cout<<nume<<'/'<<deno<<endl;

break;

case 1:

i=gcd(nume,deno);

cout<<(nume/i)<<'/'<<(deno/i)<<endl;

break;

case 2:

int nu,de;

i=gcd(nume,deno);

nu=nume/i;

de=deno/i;

cout<<(nume/de)<<"("<<(nu%de)<<'/'<<de<<")"<<endl;

break;

default:

cout<<nume<<'/'<<deno<<endl;

}

}

int gcd(int x ,int y)

{

int r;

while(y!=0)

{

r=x%y;

x=y;

y=r;

}

return x;

}





 

原创粉丝点击