zoukankan      html  css  js  c++  java
  • 第五周项目二

    /*     
    * 程序的版权和版本声明部分     
    * Copyright (c)2012, 烟台大学计算机学院学生     
    * All rightsreserved.     
    * 文件名称:cf.cpp     
    * 作者:王立强  
    * 完成日期: 2013年4月3 日     
    * 版本号: v1.0     
    * 输入描述:略    
    * 问题描述:略     
    * 程序输出:略    
    */          
    #include<iostream>  
    #include<Cmath>  
    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";  
            system("pause");  
            exit(0);  
        }  
    }  
      
    void CFraction::set(int nu,int de)    //置值,改变值时用  
    {  
        if (de!=0) //如果不合适,改变值操作无效  
        {  
            nume=nu;  
            deno=de;  
        }  
    }  
      
    void CFraction::input() //按照"nu/de"的格式,如"5/2"的形式输入  
    {  
        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;  
    }  
      
    // 求m,n的最大公约数  
    int gcd(int m, int n) //这个函数可以定义为类的成员函数,也可以为一般函数  
    {  
        int r;  
        if (m<n){r=m;m=n;n=r;}  
        while(r=m%n)  // 求m,n的最大公约数  
        {  
            m=n;  
            n=r;  
        }  
        return n;  
    }  
      
    void CFraction::amplify(int n)  //放大n倍,如2/3放大5倍为10/3  
    {  
        nume*=n;  
    }  
    //输出分数:以/6为例  
    //style为0时,原样输出8/6;  
    //style为1时,输出化简后形式4/3;  
    //style为2时,输出1(1/3)形式,表示一又三分之一;  
    //style为3时,用小数形式输出,如1.3333;  
    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: "<<endl;  
        c1.set(2,7);  
        c1.output();  
      
        cout<<"输入c1: "<<endl;  
        c1.input();  
        c1.output(0);  
      
        cout<<"关于c2: "<<endl;  
        c2.output(0);  
        c2.output(1);   
        c2.output(3);   
        c2.output(3);  
        c2.output();  
      
        cout<<"将c2化简: "<<endl;  
        c2.simplify();  
        c2.output(0);  
      
        cout<<"将c2放大倍: "<<endl;  
        c2.amplify(5);  
        c2.output(0);  
        c2.output(1);   
      
        system("pause");  
        return 0;  
    }  


  • 相关阅读:
    Swift入门篇-Hello World
    Swift入门篇-swift简介
    Minecraft 插件 world edit 的cs 命令
    搭建本地MAVEN NEXUS 服务
    MC java 远程调试 plugin 开发
    企业内部从零开始安装docker hadoop 提纲
    javascript 命令方式 测试例子
    ca des key crt scr
    JSF 抽象和实现例子 (函数和属性)
    form 上传 html 代码
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2998491.html
Copyright © 2011-2022 走看看