《第五周实验报告任务2》

来源:互联网 发布:itnc530模拟软件下载 编辑:程序博客网 时间:2024/05/16 19:40
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:         分数类                     
* 作    者:            刘江波                  
* 完成日期:    2012     年    03   月    19    日
* 版 本 号:          v.03191
* 对任务及求解方法的描述部分
* 输入描述: 
* 问题描述: 
* 程序输出: 
* 程序头部的注释结束

*/

#include<iostream>using namespace std;class CFraction{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/3void output(int style = 0);          //输出:以8/6为例,style为0时,输出8/6;//style为1时,输出4/3;                                 //style为2时,输出1(1/3),表示一又三分之一;                                   //不给出参数和非1、2,认为是方式0private:int nume;//分子int deno;//分母int gcd(int , int );//求公因数};CFraction::CFraction(int nu, int de):nume(nu),deno(de){ }int main(){CFraction cf;cf.input();cout<<"输入的值为:";        cf.output(0);cout << "化简后的值是:" << endl;cf.Simplify() ;cf.output(1);cf.output(2);cout << "再扩大七倍后是:" << endl;cf.amplify(7);cf.output(0);cout<<"重新制值为:"<<endl;cf.Set(11, 18);cf.Simplify() ;cf.output(0);system("PAUSE");return 0;}void CFraction::Set(int nu, int de){nume = nu;deno = de;}void CFraction::input(){char c;cout << "输入分数:(格式:nu/de)" << endl;while(1)  {  cin >> nume >> c >> deno;  if(c != '/')  {  cout << "格式不正确,请重新输入!" << endl;  }  else  {  break;  }  }   }void CFraction::Simplify(){nume = nume / gcd(nume, deno);deno = deno / gcd(nume, deno);}int CFraction::gcd(int nu, int de)  {      int t, r, a, b; a = nu;b = de;    if (a < b)         {          t = a;          a = b;                                           b = t;      }       while (b != 0)      {          r = a % b;          a = b;          b = r;      }      return a;  }void CFraction::amplify(int n){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):Simplify();if(nume > deno){int add;add = nume / deno;if(nume % deno == 0){cout << add << endl;}else{cout << add << "(" << nume % deno << "/" << deno << ")" << endl;}}break;default:cout << nume << "/" << deno << endl;break;}}


原创粉丝点击