#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; else return false; } bool CFraction:: operator < (CFraction &f) { nume = nume * f.deno; f.nume = f.nume * deno; if(nume < f.nume) return true; else return false; } bool CFraction:: operator >= (CFraction &f) { nume = nume * f.deno; f.nume = f.nume * deno; if(nume > f.nume || nume == f.nume) return true; else return false; } bool CFraction:: operator <= (CFraction &f) { nume = nume * f.deno; f.nume = f.nume * deno; if(nume < f.nume || nume == f.nume) return true; else return false; } bool CFraction:: operator == (CFraction &f) { nume = nume * f.deno; f.nume = f.nume * deno; if(nume == f.nume) return true; else return false; } bool CFraction:: operator != (CFraction &f) { nume = nume * f.deno; f.nume = f.nume * deno; if(nume != f.nume) return true; else return 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"); }
* 程序的版权和版本声明部分
* Copyright (c) 2012, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: class time
* 作 者: 于昊
* 完成日期: 2012 年 04 月 11 日
* 版 本 号: 1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 问题分析:
* 算法设计:……