1. 程式人生 > >c++設計一個分數類。要求:1.分類包含的分數運算有:連個分數的加、減、乘、除運算。

c++設計一個分數類。要求:1.分類包含的分數運算有:連個分數的加、減、乘、除運算。

設計一個分數類。要求:
1.分數中包含的分數運算有:兩個分數的加、減、乘、除運算。
2.分數的輸出格式是:“分子/分母”。
3.編寫一個測試程式進行測試。
Java版本請複製連結檢視http://blog.csdn.net/bee0_0/article/details/78106813
#include <iostream>
using namespace std;
void output(int a, int b, int c, int d, int e, int f, char name);
//使用函式以方便輸出結果
class Fraction {//建立分數類
private:
    //第一個數的分子與分母
int numerator1; int denominator1; //第二個數的分子與分母 int numerator2; int denominator2; //計算結果的分子與分母 int numerator3; int denominator3; public: void set(int numerator1, int denominator1, int numerator2, int denominator2) { //通過set函式進行賦值 this->denominator1 = denominator1; this->denominator2 = denominator2;
this->numerator1 = numerator1; this->numerator2 = numerator2; } void multiply() { //乘法運算 numerator3 = numerator1 * numerator2; //結果分子 = 分子1 * 分子2 denominator3 = denominator1 * denominator2; //結果分母 = 分母1 * 分母2 output(numerator1, denominator1, numerator2, denominator2, numerator3, denominator3
, '*'); } void divided() { //除法運算 numerator3 = numerator1 * denominator2; denominator3 = denominator1 * numerator2; output(numerator1, denominator1, numerator2, denominator2, numerator3, denominator3, '/'); } void plus() { void output(int a, int b, int c, int d, int e, int f, char name); int a, b, c; a = denominator1; b = denominator2; //使用相減法求最大公約數 if (a == b) { denominator3 = a; numerator3 = numerator1 + numerator2; } else { while (a != b) { if (a > b) a = a - b; else b = b - a; } int t;//最小公倍數 = t t = (denominator1 * denominator2) / a; //最小公倍數 =( 分母1 * 分母2 )/最大公約數 denominator3 = t;//結果的分母 = 最小公倍數 numerator3 = ((t / denominator1)*numerator1) + ((t / denominator2)*numerator2); //結果的分子 = ((最小公倍數/分母1)* 分子1)+ ((最小公倍數/分母2)* 分子2) } output(numerator1, denominator1, numerator2, denominator2, numerator3, denominator3, '+'); } void minus() { void output(int a, int b, int c, int d, int e, int f, char name); int a, b, c; //使用相減法求最大公約數 double p, q; a = denominator1; b = denominator2; if (a == b) { denominator3 = a; //當分母相同時分子相見應 大 - 小 if (numerator1 > numerator2) { numerator3 = numerator1 - numerator2; } else { numerator3 = numerator2 - numerator1; } } else { while (a != b) { if (a > b) a = a - b; else b = b - a; } int t;//令最小公倍數 = t t = (denominator1 * denominator2) / a; //最小公倍數 =( 分母1 * 分母2 )/最大公約數 denominator3 = t; //結果的分母 = 最小公倍數 p = double(numerator1) / double(denominator1); q = double(numerator2) / double(denominator2); //將兩分數轉化成小數 if( p > q){ numerator3 = ((t / denominator1)*numerator1) - ((t / denominator2)*numerator2); output(numerator1, denominator1, numerator2, denominator2, numerator3, denominator3, '-'); }else{ numerator3 = ((t / denominator2)*numerator2) - ((t/denominator1)*numerator1); output(numerator1, denominator1, numerator2, denominator2, numerator3, -denominator3, '-'); } } } }; int main() { void output(int a, int b, int c, int d, int e, int f); Fraction a;//建立物件a int x, y;//x = numerator1; y = denominator1; int m, n;//m = numerator2; n = denominator2; cout << "請輸入第一個數的分子和分母 :" << endl; cin >> x >> y; cout << "請輸入第二個數的分子和分母 :" << endl; cin >> m >> n; a.set(x, y, m, n); //將x,y,m,n通過set函式分別賦給 : //numerator1 denominator1 numerator2 denominator2 a.multiply(); a.divided(); a.plus(); a.minus(); return 0; } void output(int a, int b, int c, int d, int e, int f, char name) { cout << a << "/" << b << " " << name << " " << c << "/" << d << " = " << e << "/" << f << endl; // a / b "+ - * /" c / d = e / f }