分数处理

来源:互联网 发布:python nltk 编辑:程序博客网 时间:2024/05/20 10:56
/** 程序的版权和版本声明部分* Copyright (c)2013, 烟台大学计算机学院学生* All rightsreserved.* 文件名称:score.cpp                           * 作    者:   赵 洋                         * 完成日期: 2013 年 03 月  28 日* 版本号: v1.0      * 输入描述:已经在程序中初始化* 问题描述:分数处理* 输出:*/#include<iostream>using namespace std;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/3void output(int style);void output();//输出:以8/6为例,style为0时,原样输出8/6;//style为1时,输出化简后形式4/3;//style为2时,输出1(1/3)形式,表示一又三分之一;//style为3时,用小数形式输出,如1.3333;//不给出参数和非1、2,3,认为是方式0};CFraction::CFraction(int nu,int de){nume=nu;deno=de;}void CFraction::set(int nu,int de){nume=nu;deno=de;cout<<"按分数形式输出为:"<<nume<<"/"<<deno<<endl;}void CFraction::input(){cout<<"请输入分子,分母的值:";cin>>nume>>deno;cout<<"按分数形式输出为:"<<nume<<"/"<<deno<<endl;}void CFraction::simplify(){int min;if(nume<deno)min=nume;elsemin=deno;while(((nume%min)+(deno%min))!=0){min=min-1;}nume=nume/min;deno=deno/min;    cout<<"化简后输出为:"<<nume<<"/"<<deno<<endl;}void CFraction::amplify(int n){cout<<"放大"<<n<<"倍输出为:"<<(nume*n)<<"/"<<deno<<endl;}void CFraction::output(int style){if(style==0){cout<<"按分数形式输出为:"<<nume<<"/"<<deno<<endl;}else if(style==1){int a,b,c,d;     int num1,num2,temp;                 num1=nume;  num2=deno;  c=nume;  d=deno;  if(num1>num2) {  temp=num1; num1=num2; num2=temp; }  a=num1; b=num2;  while(b!=0) {  temp=a%b;  a=b;  b=temp;  }  c=c/a;  d=d/a;  cout<<"化简后输出为:"<<c<<"/"<<d<<endl;}else if(style==2){int i;if(nume>deno){i=nume/deno;cout<<"以真分数形式输出为:"<<i<<"("<<(nume-deno)<<"/"<<deno<<")"<<endl;}elsecout<<"以真分数形式输出为:"<<nume<<"/"<<deno<<endl;}else if(style=3){double m;m=double(nume)/double(deno);cout<<"以小数形式输出为:"<<m<<endl;}elsecout<<nume<<"/"<<deno<<endl;}void CFraction::output(){cout<<"以原来形式输出为:"<<nume<<"/"<<deno<<endl;}int main(){cout<<"第一个分数验证为:"<<endl;CFraction no1;no1.set(12,6);no1.simplify();no1.amplify(3);no1.output(2);cout<<"第二个分数验证为:"<<endl;CFraction no2;no2.input();no2.simplify();no2.amplify(2);no2.output();return 0;}


运行结果:

 

原创粉丝点击