**第二学期第五周项目2--分数类的雏形

本文介绍了一个简单的分数类的设计,包括置值、化简、放大倍数和不同风格的输出功能。通过实例演示了如何操作分数,并提供了具体的代码实现。
/*
 * Copyright (c) 2013, 烟台大学计算机学院
 * All rights reserved.
 * 作    者:  沈远宏
 * 完成日期:2013 年  03月25日
 * 版 本 号:v1.0
 * 问题描述:设计一个简单的分数类,完成对分数的几个运算。
 ① 置值②化简(使分子分母没有公因子)③放大n倍④输出:以8/6为例,style为0时,原样输出8/6;
style为1时,输出1(1/3)形式,表示一又三分之一;style为2时,用小数形式输出,如1.3333;
*/
#include <iostream>
using namespace std;
class CFraction
{
private:
    int nume;  // 分子
    int deno;  // 分母
public:
    CFraction(int nu=0,int de=1)
    {
        nume=nu;
        deno=de;
    }   //构造函数,初始化用
    void set(int nu,int de);    //置值,改变值时用
    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时,输出1(1/3)形式,表示一又三分之一;
    //style为2时,用小数形式输出,如1.3333;
    //默认方式0
};
void CFraction::set(int nu,int de)
{
    CFraction::nume=nu;
    CFraction::deno=de;
}
void CFraction:: input()
{
    int nu,de;
    char t;
    cout<<"请输入一个分数,按照(分子/分母)的形式:\n";
    cin>>nu>>t>>de;
    CFraction::set(nu,de);
}
void CFraction::simplify()
{
    int t,r,x=CFraction::nume,y=CFraction::deno;  //求分子分母的最大公约数
    if(x<y)t=x,x=y,x=t;
    while(y!=0)
    {
        r=x%y;
        x=y;
        y=r;
    }
    if(x==1)
    {
        cout<<"已经是最简形式。"<<endl;
    }
    else
    {
        cout<<"化简后为"<<(CFraction::nume/x)<<"/"<<(CFraction::deno/x)<<endl;
    }

}
void CFraction::amplify(int n)
{
    cout<<"放大"<<n<<"倍后为:"<<(CFraction::nume*n)<<"/"<<CFraction::deno<<endl;
}

void CFraction::output(int style)
{
    switch(style)
    {
    case 0:
        cout<<CFraction::nume<<"/"<<CFraction::deno;
        break;
    case 1:
        cout<<CFraction::nume/CFraction::deno<<"又"<<(CFraction::nume%CFraction::deno)<<"/"<<CFraction::deno;
        break;
    case 2:
        cout<<((double)CFraction::nume)/CFraction::deno;
        break;
    default:
        cout<<"error!";
    }
}
int main()
{
    int n,style;
    CFraction c;
    c.input();
    c.simplify();
    cout<<"请输入放大多少倍:";
    cin>>n;
    c.amplify(n);
    cout<<"请选择输出方式:(0-原样输出,1-化简输出,2-小数输出)";
    cin>>style;
    c.output(style);
    return 0;
}

运行结果:

心得体会:

我这个程序里有个毛病就是在set和output函数里面有个默认参数,我去掉了,因为有的话会报错,我不是很明白怎么做,还有最后那个output怎么是默认0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值