第五周实验报告2

来源:互联网 发布:房产销售提成软件 编辑:程序博客网 时间:2024/06/01 15:25
/*
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称: class time
* 作 者: 于昊
* 完成日期: 2012 年 03 月 20 日
* 版 本 号: 1.0
* 对任务及求解方法的描述部分
* 输入描述:输入时间
* 问题描述:
* 程序输出:时间
* 问题分析:
* 算法设计:……
* /
#include <iostream>    using namespace std;    int gcd(int a,int b);//求最大公约数    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);       //输出:以8/6为例,style为0时,输出8/6      //style为1时,输出4/3;      //style为2时,输出1(1/3),表示一又三分之一;      //不给出参数和非1、2,认为是方式0  };  int main()  {      CFraction cf;        cf.set();        cf.input();        cf.simplify();        cf.amplify(4);        cf.output(2);        system ("Pause");        return 0;    }    //构造函数,初始化用  CFraction::CFraction(int nu,int de)  {      if (de != 0)      {          nume = nu;                    deno = de;      }      else      {          cout << "分母不能为0! " << endl;          exit(0);//直接退出      }        }     //置值,改变值时用  void CFraction::set(int nu,int de)  {      if(de != 0)      {          nume = nu;                    deno = de;      }  }  void CFraction::input()  {      cout << "请输入分数(m/n):" << endl;      int nu,de;      while(1)      {                char c;                    cin >> nu >> c >> de;                    if(c != '/')          {              cout << "输入格式不对!" << endl;          }          else if(de == 0)          {              cout << "分母不能为0!" << endl;          }          else              break;      }      nume = nu;        deno = de;    }    int gcd(int a, int b)////求最大公约数  {      int c;            while(b != 0)      {          c = a % b;                    a = b;                    b = c;      }      return a;  }  void CFraction::simplify()  {      int t;            t = gcd(nume,deno);            nume = nume / t;            deno = deno / t;        }  void CFraction::amplify(int n)////放大n倍,如2/3放大5倍为10/3  {      nume = nume * n;        cout << nume << '/' << deno << endl;            }  void CFraction::output(int style)  {      int x;      switch (style)      {                case 0:              cout << nume << '/' << deno << endl;                    case 1:                                x = gcd(nume,deno);                                    cout << nume / x << '/' << deno / x << endl;                                    break;                    case 2:                             x = gcd(nume,deno);                                    nume = nume / x;                                    deno = deno / x;                                    cout << (nume / deno) << '(' << (nume %deno)<< '/' << deno << ')' << endl;                                    break;                                      default :                  cout << nume << '/' << deno << endl;                  }  }  

原创粉丝点击