C++程序设计Y.Daniel Liang 第十三、十四、十五章课后习题答案.docx
文本预览下载声明
Exercise13_2#include iostreamusing namespace std;class Rational{public: Rational::Rational() {r[0] = 0;r[1] = 1; } Rational::Rational(long numerator, long denominator) {long factor = gcd(numerator, denominator);r[0] = ((denominator 0) ? 1 : -1) * numerator / factor;r[1] = abs(denominator) / factor; }long Rational::getNumerator() {return r[0]; }long Rational::getDenominator() {return r[1]; } /** Find GCD of two numbers */long Rational::gcd(long n, long d) {long n1 = abs(n);long n2 = abs(d);intgcd = 1;for (int k = 1; k = n1 k = n2; k++) {if (n1 % k == 0 n2 % k == 0)gcd = k; }returngcd; } Rational Rational::add(const Rational secondRational) {long n = r[0] * secondRational.getDenominator() + r[1] * secondRational.getNumerator();long d = r[1] * secondRational.getDenominator();return Rational(n, d); } Rational Rational::subtract(const Rational secondRational) {long n = r[0] * secondRational.getDenominator() - r[1] * secondRational.getNumerator();long d = r[1] * secondRational.getDenominator();return Rational(n, d); } Rational Rational::multiply(const Rational secondRational) {long n = r[0] * secondRational.getNumerator();long d = r[1] * secondRational.getDenominator();return Rational(n, d); } Rational Rational::divide(const Rational secondRational) {long n = r[0] * secondRational.getDenominator();long d = r[1] * secondRational.r[0];return Rational(n, d); }int Rational::compareTo(const Rational secondRational) { Rational temp = this-subtract(secondRational);if (temp.getNumerator() 0)return -1;else if (temp.getNumerator() == 0)return 0;elsereturn 1; }bool Rational::equals(const Rational secondRational) {if (this-compareTo(secondRational) == 0)return true;elsereturn false; }int Rational::intValue() {returngetNumerator() / getDenominator(); }double Rational::doubleValue() {return 1.0 * getNumerator() / getDenominator(); }string Rational::toString() {char s1[20], s2[20];itoa(r[0], s1, 10); // Convert int to string s1itoa(r[
显示全部