/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 求一系列分数
* 作 者: 王智凯
* 完成日期: 12 年 3 月 19 日
* 版 本 号:
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
#include <iostream>
using namespace std;
class CFraction
{
public:
CFraction(int nu=0,int de=1);
void Set(int nu=0,int de=1);
void input();
int get_common_divisor();
void Simplify();
void amplify(int n=2);
void output(int style=0);
private:
int nume;
int deno;
int inp;
int Simp;
int ampli;
int m;
int d;
};
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 a;
cout << "输入分数:(格式:nu / de)" << endl;
while(1)
{
cin >> nume >> a >> deno;
if(a != '/')
{
cout << "格式不正确,请重新输入!" << endl;
}
else
{
break;
}
}
cout<<"该分数为:"<<endl;
cout<< nume << "/" << deno << endl ;
}
int CFraction::get_common_divisor()
{
int max,min,x;
if(deno > nume)
{
max = deno;
min = nume;
}
else
{
max = nume;
min = deno;
}
while (min != 0)
{
x =min;
min =max % min;
max = x;
}
return max;
}
void CFraction::Simplify()//化简
{
m = nume / get_common_divisor();
d = deno / get_common_divisor();
cout<< m <<"/"<< d <<endl;
}
void CFraction::amplify(int n)
{
ampli = n * m ;
cout<<ampli<<"/"<< d <<endl;
}
void CFraction::output(int style)
{
double x;
double y;
switch(style)
{
case 0:
cout << nume << "/" << deno << endl;
break;
case 1:
cout << m << "/" << d << endl;
break;
case 2:
x = m / d;
y = m % d;
cout << x << "(" <<y << "/" << d << ")" << endl;
break;
default:;
}
}
void main( void)
{
CFraction C1;
C1.Set(3,7);
C1.input();
cout<<"化简后为:"<<endl;
C1.Simplify();
cout<<"扩大3倍后为:"<<endl;
C1.amplify(3);
cout<<"当输入2 时变为:"<<endl;
C1.output(2);
}