01./* 02 .* Program Copyright and version description section 03. * copyright (c) 2013, Yantai University Computer college student 04. * All rightsreserved. 05. * file name: cfraction. CPP 06. * Author: Zhao guanzhe 07. * Completion Date: April 8, April 19, 2013. * version: V1.0 09. * input Description: 10. * Problem description: 11. */# include <iostream> using namespace STD; Class cfraction {PRIVATE: int nume; // The Int deno; // denominator int gcd (int m, int N); public: // cfraction (INT n = 1, int d = 1) {If (D = 0) return; nume = n, deno = D;} friend cfrac Tion operator + (cfraction & C1, cfraction & C2); friend cfraction operator-(cfraction & C1, cfraction & C2); friend cfraction operator * (cfraction & C1, cfraction & C2); friend cfraction operator/(cfraction & C1, cfraction & C2); friend cfraction operator-(cfraction & C); bool operator> (cfraction & C ); bool operator <(cfraction & C); bool operator >=( cfraction & C); bool operator <= (cfraction & C); bool operator = (Cfraction & C); bool Operator! = (Cfraction & C); void simplify (); void display () ;}; void cfraction: simplify () {int n = gcd (deno, nume ); deno/= N; // simplify nume/= N;} int cfraction: gcd (int m, int N) {int R; If (M <n) {r = m; M = N; n = r;} while (r = m % N) // evaluate m, the maximum number of common approx. n {M = N; N = r;} return N;} void cfraction: Display () {cout <nume <"/" <deno <Endl ;} cfraction operator + (cfraction & C1, cfraction & C2) {cfraction C; C. deno = c1.deno * c2.deno; C. nume = c1.nume * C2.deno + c2.nume * c1.deno; C. simplify (); Return C;} cfraction operator-(cfraction & C1, cfraction & C2) {cfraction C; C. deno = c1.deno * c2.deno; C. nume = c1.nume * c2.deno-c2.nume * c1.deno; C. simplify (); Return C;} cfraction operator * (cfraction & C1, cfraction & C2) {cfraction C; C. deno = c1.deno * c2.deno; C. nume = c1.nume * c2.nume; C. simplify (); Return C;} cfraction operator/(cfraction & C1, cfraction & C2) {cfraction C; C. deno = c1.deno * c2.nume; C. nume = c1.nume * c2.deno; C. simplify (); Return C;} cfraction operator-(cfraction & C) {return cfraction (-C. nume, C. deno);} bool cfraction: Operator> (cfraction & C) {cfraction CF (* This/C); If (cf. nume/Cf. deno> 1) return true; else return false;} bool cfraction: Operator <(cfraction & C) {cfraction CF (* This/C); If (cf. nume/Cf. deno <1) return true; else return false;} bool cfraction: deny Ator >=( cfraction & C) {cfraction CF (* This/C); If (cf. nume/Cf. deno> = 1) return true; else return false;} bool cfraction: Operator <= (cfraction & C) {cfraction CF (* This/C); If (cf. nume/Cf. deno <= 1) return true; else return false;} bool cfraction: Operator = (cfraction & C) {cfraction CF (* This/C); If (cf. nume/Cf. deno = 1) return true; else return false;} bool cfraction: Operator! = (Cfraction & C) {cfraction CF (* This/C); If (Cf. nume/Cf. deno! = 1) return true; else return false;} // Implementation of the overloaded function and the main () function int main () {cfraction C1 (3, 8) used for testing ), c2 (2, 8), C3 (1, 5); cout <"C1 ="; c1.display (); cout <"C2 ="; c2.display (); cout <"C3 ="; c3.display (); If (C1> C2) cout <"C1> C2" <Endl; If (C2 <C1) cout <"C2 <C1" <Endl; If (c2> = C3) cout <"c2> = C3" <Endl; If (C2 <= C3) cout <"C2 <= C3" <Endl; If (C2 = C3) cout <"C2 = C3" <Endl; If (C1! = C2) cout <"C1! = C2 "<Endl; cout <" C1 + C2 = "; (C1 + C2 ). display (); cout <"c1-c2 ="; (C1-C2 ). display (); cout <"C1 * C2 ="; (C1 * C2 ). display (); cout <"C1/C2 ="; (C1/C2 ). display (); C3 =-C3; c3.display ();}
Running result: