头文件:
1#ifndef Rational_H 2#define Rational_H 3class Rational 4{ 5private: 6 int numerator; 7 int denominator; 8public: 9 Rational(); 10 Rational(int , int ); 11 Rational simplification(Rational&); 12 Rational addition(Rational& , Rational& ); 13 Rational subtraction(Rational& , Rational& ); 14 Rational multiplication(Rational& a, Rational& b); 15 Rational division(Rational& a, Rational& b); 16 void showvalue1();//分数形式展现 17 void showvalue2();//有理数形式展现 18}; 19#endif
定义类的文件:
1#include<math.h> 2Rational::Rational() :numerator(1), denominator(1) 3{ 4} 5Rational::Rational(int a, int b):numerator(a), denominator(b) 6{ 7 Rational::simplification(*this); 8} 9Rational Rational::simplification(Rational&a) 10{ 11 int mini = std::min(numerator, denominator); 12 for (int i = mini; i > 0; i--) 13 { 14 if (numerator % i == 0 && denominator % i == 0) 15 { 16 numerator /= i; 17 denominator /= i; 18 break; 19 } 20 } 21 return a; 22} 23Rational Rational::addition(Rational&a, Rational&b) 24{ 25 this->numerator = a.numerator * b.denominator + a.denominator * b.numerator; 26 this->denominator = a.denominator * b.denominator; 27 Rational::simplification(*this); 28 return *this; 29} 30Rational Rational::subtraction(Rational& a, Rational& b) 31{ 32 this->numerator = a.numerator * b.denominator - a.denominator * b.numerator; 33 this->denominator = a.denominator * b.denominator; 34 Rational::simplification(*this); 35 return *this; 36} 37Rational Rational::multiplication(Rational& a, Rational& b) 38{ 39 this->numerator = a.numerator * b.numerator; 40 this->denominator = a.denominator * b.denominator; 41 Rational::simplification(*this); 42 return *this; 43} 44Rational Rational::division(Rational& a, Rational& b) 45{ 46 this->numerator = a.numerator * b.denominator; 47 this->denominator = a.denominator * b.numerator; 48 Rational::simplification(*this); 49 return *this; 50} 51void Rational::showvalue1() 52{ 53 std::cout << numerator << "/" << denominator<<std::endl; 54} 55void Rational::showvalue2() 56{ 57 double value = (double)numerator / denominator; 58 std::cout << value << std::endl; 59}
一个demo:
1#include"head.h" 2int main() 3{ 4 //测试 5 Rational x(16, 12); 6 Rational y(4, 9); 7 Rational a1; 8 Rational a2; 9 Rational a3; 10 Rational a4; 11 a1.addition(x, y); 12 a2.subtraction(x, y); 13 a3.multiplication(x, y); 14 a4.division(x, y); 15 a1.showvalue1(); 16 a2.showvalue1(); 17 a3.showvalue1(); 18 a4.showvalue1(); 19 a1.showvalue2(); 20 a2.showvalue2(); 21 a3.showvalue2(); 22 a4.showvalue2(); 23}
