第三周项目 2 测试与设计

来源:互联网 发布:vue.js chrome插件 编辑:程序博客网 时间:2024/06/06 14:22
/* *Copyright (c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称 : main.cpp *作    者 :韩娟 *完成日期 :2015年4月5日 *版 本 号 :v1.0 *问题描述 :完成分数类的设计,并在main()函数中自行定义对象,调用各成员函数,完成基本的测试。实践策略:(1)不建议一次实现所有成员函数后再调试,而是实现一个,测试一个;(2)本项目的实现及测试顺序可以是:先构造函数和输出output函数(可以先只实现一种输出方式),再set函数,再input函数,等等。以后我们将能够:(1)定义了int i,j,能用cin>>i>>j;在键盘上输入i和j的值。以后,定义了CFraction c1, c2,可以用cin>>c1>>c2;输入分数,用cout<<c1<<c2;输出分数。(2)i+j完成两个整型数的相加,我们可以通过自行定义成员函数,用c1+c2、c1/c2、c1>c2等,实现分数的四则运算、比较、求倒数等。 *输入描述 :略 *程序输出 :略 */#include<iostream>#include<Cmath>#include<cstdlib>using namespace std;int gcd(int m, int n);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();//按照"nu/de"的格式,如"5/2"的形式输入    void simplify();//化简(使分子分母没有公因子)    void amplify(int n);//放大n倍,如2/3放大5倍为10/3    void output(int style=0);};CFraction::CFraction(int nu,int de){    if (de!=0)    {        nume=nu;        deno=de;    }    else    {        cerr<<"格式错误,程序退出\n";        exit(0);    }}void CFraction::set(int nu,int de){    if (de!=0)    {        nume=nu;        deno=de;    }}void CFraction::input(){    int nu,de;    char c;    while(1)    {        cout<<"输入分数(m/n): ";        cin>>nu>>c>>de;        if(c!='/')            cout<<"输入格式错误!\n ";        else if (de==0)            cout<<"分母不能为零!\n ";        else            break;    }    nume=nu;    deno=de;}void CFraction::simplify(){    int n=gcd(deno, nume);    deno/=n;    nume/=n;}int gcd(int m, int n){    int r;    if (m<n)    {        r=m;        m=n;        n=r;    }    while(r=m%n)    {        m=n;        n=r;    }    return n;}void CFraction::amplify(int n){    nume*=n;}void CFraction::output(int style){    int n;    switch(style)    {    case 0:        cout<<"原样:" <<nume<<'/'<<deno<<endl;        break;    case 1:        n=gcd(deno, nume);        cout<<"化简形式: "<<nume/n<<'/'<<deno/n<<endl;     //输出化简形式,并不是要化简        break;    case 2:        cout<<"带分数形式:" <<nume/deno<<'('<<nume%deno<<'/'<<deno<<')'<<endl;        break;    case 3:        cout<<"近似值:" <<nume/double(deno)<<endl;        break;    default:        cout<<"默认原样:" <<nume<<'/'<<deno<<endl;    }}int main(){    CFraction c1,c2(8,6);    cout<<"关于c1: "<<endl;    c1.output(0);    cout<<"改变c1(set): "<<endl;    c1.set(2,7);    c1.output();    cout<<"输入c1(input): "<<endl;    c1.input();    c1.output(0);    cout<<"关于c2(output): "<<endl;    c2.output(0);    c2.output(1);    c2.output(3);    c2.output(3);    c2.output();    cout<<"将c2化简(simplify): "<<endl;    c2.simplify();    c2.output(0);    cout<<"将c2放大倍(amplify): "<<endl;    c2.amplify(5);    c2.output(0);    c2.output(1);    return 0;}


运行结果

学习心得:

好好学习

 

 

0 0
原创粉丝点击