第五周上机任务2

来源:互联网 发布:淘宝达人的网址多少 编辑:程序博客网 时间:2024/05/22 00:24
/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:练习.cpp                              * 作    者:宋本一                              * 完成日期:2012 年 3 月 24 日* 版 本 号:v5.2          * 对任务及求解方法的描述部分* 输入描述: * 问题描述: * 程序输出: * 程序头部的注释结束*/#include<iostream>using namespace std;class CFraction  {private:  int nume;  // 分子  int deno;// 分母  //int i;  public:  CFraction(int nu=0,int de=1):deno(de),nume(nu){};   //构造函数,初始化用      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  };  void CFraction::input() {      char c1;      cout <<"请输入一个分数(格式nu/de):";      while(1)      {          cin >> nume >> c1 >> deno;          if ( c1 !='/' )          {              cout << "输入格式不正确,请重新输入!";          }          else              break;      }  }  void CFraction::Simplify(){  int i;   if( deno < nume )  i = deno;  else  i = nume;  for( ; i > 0; --i)  {  if ( nume % i == 0 && deno % i == 0 )  {  nume = nume/i;  deno = deno/i;  break;  }  }  }  void CFraction::amplify(int n){      nume = nume * n;  }  void CFraction::output(int style){        switch ( style )      {  case 0: cout<<nume<<"/"<<deno<<endl;break;  case 1:          Simplify();          cout<<nume<< "/" << deno <<endl;break;  case 2:  cout<<nume/deno<< "(" << nume%deno<<"/"<<deno<<")"<<endl;break;      }  }  int main()  {      CFraction CF;      CF.input();      CF.output();       CF.amplify(2);      CF.Simplify();      CF.output();      CF.output(1);      CF.output(2);      system("PAUSE");    return 0;}  


运行结果: