c++第二次实验--类和对象1

来源:互联网 发布:淘宝的卖家中心不见了 编辑:程序博客网 时间:2024/05/16 05:56
分数类

一、问题及代码:


/* * 文件名称:Ex1-1.cpp * 完成日期:2016 年 3 月 31 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:*  C++中提供了多种基本的数据类型。*  实际上,这些远不能满足我们的需求,如分数。我们可以自定义类支持这些数据类型。* 输入描述:输入一个分数;* 问题描述:本任务将设计一个简单的分数类,完成对分数的几个运算。* 一则巩固基于对象编程的方法,* 二则也为运算符重载等积累些感性认识。* 程序输出:略* 问题分析:略* 算法设计:化简分数时需要求分子分母最大公约数*/  #include<iostream>using namespace std;class CFraction{private:    int nume;  // 分子    int deno;  // 分母public:    CFraction(int nu,int de);   //构造函数,初始化用    int  gdc();              //计算最大公约数    void setc(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=0);//输出:以8/6为例,style为0时,原样输出8/6;//style为1时,输出化简后形式4/3;//style为2时,输出1(1/3)形式,表示一又三分之一;//style为3时,用小数形式输出,如1.3333;//默认方式0};CFraction::CFraction(int nu,int de){    nume=nu;    deno=de;}void CFraction::setc(int nu,int de){    nume=nu;    deno=de;}void CFraction::input(){    cout<<"输入分数(m/n):";    char a;    cin>>nume>>a>>deno;}void CFraction::simplify(){    int a;    a=gdc();    nume/=a;deno/=a;}int  CFraction::gdc(){    int a=nume,b=deno,g=nume%deno;    while(g)    {        a=b;        b=g;        g=a%b;    }    return b;}void CFraction::amplify(int n){    nume*=n;}void CFraction::output(int style){    int b;b=gdc();    switch (style)    {        case 0:cout<<"原样:"<<nume<<"/"<<deno<<endl;break;        case 1:cout<<"化简形式:"<<nume/b<<"/"<<deno/b<<endl;break;        case 2:cout<<"带分数形式:"<<nume/deno<<"("<<nume%deno/b<<"/"<<deno/b<<")"<<endl;break;        case 3:double s=(double)nume/deno;cout<<"小数形式:"<<s<<endl;break;    }}int main(){    CFraction c1(0,1),c2(8,6);    cout<<"关于c1:"<<endl;    c1.output();    cout<<"改变c1:"<<endl;    c1.setc(2,7);    c1.output();    cout<<"输入c1:"<<endl;    c1.input();    c1.output();    cout<<"关于c2:"<<endl;    c2.output();    c2.output(1);    c2.output(2);    c2.output(3);    c2.output();    cout<<"将c2化简:"<<endl;    c2.simplify();    c2.output();    cout<<"将c2放大5倍:"<<endl;    c2.amplify(5);    c2.output();    c2.output(1);}



二、运行结果:




三、心得体会:

需要注意的细节有很多,比如输出化简形式时不能修改类里的分子和分母。整体算法不难,但却是比较长的一串代码,不免让人看的眼花,不过主函数确实是简单许多。


四、知识点总结:

基本学会对类的一些操作,感觉类就像是结构体和函数的一个结合一样。


0 1
原创粉丝点击