第八周任务三 运算符重载 分数

来源:互联网 发布:无线传感器网络电子书 编辑:程序博客网 时间:2024/06/06 18:36
/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:                              * 作    者:   姜雅明                              * 完成日期:   2012     年   04    月    10    日* 版 本 号:   1.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();            //化简(使分子分母没有公因子)CFraction operator + (CFraction &f);CFraction operator - (CFraction &f);CFraction operator * (CFraction &f);CFraction operator / (CFraction &f);CFraction operator - ();bool operator > (CFraction &f);bool operator < (CFraction &f);bool operator >= (CFraction &f);bool operator <= (CFraction &f);bool operator == (CFraction &f);bool operator != (CFraction &f);void output(int style=0);//输出:以8/6为例,style为0时,输出8/6;//style为1时,输出4/3;//style为2时,输出1(1/3),表示一又三分之一;//不给出参数和非1、2,认为是方式0};CFraction:: CFraction(int nu,int de): nume(nu), deno(de){}void CFraction:: Set(int nu,int de){nume = nu;deno = de;}void CFraction:: input(){char ch = '/';cout << "请输入分数值(nu/de):";cin >> nume >> ch >> deno;while(1){if (ch != '/'){cout << "格式错误,请重新输入:";cin >> nume >> ch >> deno;}else {break;}}}void CFraction:: Simplify(){int i, j;for (i = 2; i <= nume; ++i){for(j = 2; j <= deno; ++j){if (nume % j == 0 && deno % j == 0){nume = nume / j;deno = deno / j;}}}}CFraction CFraction:: operator + (CFraction &f){CFraction f1;f1.deno = f.deno * deno;f1.nume = f.deno * nume + f.nume * deno;return f1;}CFraction CFraction::  operator - (CFraction &f){CFraction f1;f1.deno = f.deno * deno;f1.nume = f.deno * nume - f.nume * deno;return f1;}CFraction CFraction:: operator * (CFraction &f){CFraction f1;f1.deno = f.deno * deno;f1.nume = f.nume * nume;return f1;}CFraction CFraction:: operator / (CFraction &f){CFraction f1;f1.nume = f.deno * nume;f1.deno = f.nume * deno;return f1;}CFraction CFraction:: operator - (){CFraction f1;f1.deno = deno;f1.nume = -nume;return f1;}bool CFraction:: operator > (CFraction &f){nume = nume * f.deno;f.nume = f.nume * deno;if(nume > f.nume)return true;elsereturn false;}bool CFraction:: operator < (CFraction &f){nume = nume * f.deno;f.nume = f.nume * deno;if(nume < f.nume)return true;elsereturn false;}bool CFraction:: operator >= (CFraction &f){nume = nume * f.deno;f.nume = f.nume * deno;if(nume > f.nume || nume == f.nume)return true;elsereturn false;}bool CFraction:: operator <= (CFraction &f){nume = nume * f.deno;f.nume = f.nume * deno;if(nume < f.nume || nume == f.nume)return true;elsereturn false;}bool CFraction:: operator == (CFraction &f){nume = nume * f.deno;f.nume = f.nume * deno;if(nume == f.nume)return true;elsereturn false;}bool CFraction:: operator != (CFraction &f){nume = nume * f.deno;f.nume = f.nume * deno;if(nume != f.nume)return true;elsereturn false;}void CFraction:: output(int style){int i;if (style == 0){cout << nume << "/" << deno << endl;}else if (style == 1){Simplify();if(nume % deno == 0){cout << nume;cout << endl;}else{cout << nume << "/" << deno << endl;}}else {if (nume > deno){while(nume > deno){if(nume % deno == 0){cout << nume;cout << endl;break;}else{i = nume % deno;nume = nume /deno;++i;cout << i - 1 << "(" <<nume << "/" << deno << ")" << endl;}}}else{cout << nume << "/" << deno << endl;}}}void main(){CFraction cf1;CFraction cf2;cf2.Set(8, 6);cout << "cf2=";cf2.output(1);CFraction cf3;cf3.Set(2,3);cout << "cf3=";cf3.output(1);cf1 = cf2 + cf3;cout << "cf2+cf3=";cf1.output(1);cf1 = cf2 - cf3;cout << "cf2-cf3=";cf1.output(1);cf1 = cf2 * cf3;cout << "cf2*cf3=";cf1.output(1);cf1 = cf2 / cf3;cout << "cf2/cf3=";cf1.output(1);cf1 = cf2;cf1 = -cf1;cout << "-cf2=";cf1.output(1);if (cf2>cf3) cout<<"cf2>cf3"<<endl;if (cf2<cf3) cout<<"cf2<cf3"<<endl;if (cf2==cf3) cout<<"cf2=cf3"<<endl; if (cf2!=cf3) cout<<"cf2≠cf3"<<endl;if (cf2>=cf3) cout<<"cf2≥cf3"<<endl;if (cf2<=cf3) cout<<"cf2≤cf3"<<endl;system("PAUSE");}

原创粉丝点击