分數的加減法在程式語言中是很常見的演算法,而這裡自定義了新data type較rational應為分數樹的分子分母雖是兩個部相關數字但分數這一有禮數卻將他們綁在一起所以這裡將它們放入同一變數中而非分別設一個int型態去相除

#include <iostream>
using namespace std;

struct Rational
{
    int numerator;
    int denominator;
};

Rational add(Rational q1, Rational q2);
void print(Rational q);

int main()
{
    const unsigned short N = 5;
    Rational a[N]   = { {1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5} };
    Rational b[N] = { {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1} };
    Rational c[N];
    int i;
    for (i=0; i<N; i++)
    { 
        c[i] = add(a[i], b[i]); 
        print(a[i]);
        cout << " + ";
        print(b[i]);
        cout << " = ";
        print(c[i]);
        cout << endl;
    }
    return 0;
}

Rational add(Rational q1, Rational q2) {
    Rational a[1] = {q1.numerator*q2.denominator + q2.numerator*q1.denominator, q1.denominator*q2.denominator};
    return a[0];
}    

void print(Rational q) {
    cout << q.numerator << "/" << q.denominator;
}

 

創作者介紹
創作者 dodo的部落格 的頭像
dodo

dodo的部落格

dodo 發表在 痞客邦 留言(0) 人氣( 1176 )