以下の課題を解き、レポートとして提出せよ。
/* 有理数(rational number, 分数)を表現する構造体 */
typedef struct rational {
int numer; /* 分子 (numerator) */
int denom; /* 分母 (denominator) */
} rational;
ヒント:既約分数にするには分母と分子をお互いの最大公約数で割ればよい。
最大公約数を求める方法としては「ユークリッドの互除法」が有名である。
(「ユークリッドの互除法」については
ココを参考にすること。プログラムの見通しをよくするため、二つの整数の最大公約数を求める関数 int gcd(int a, int b)
を作るとよい)
プログラムの雛型をここに置いておくので、このプログラムをベースにして必要なコードを追加するとよい。
以下は実行例である。入力する数値をいろいろ変えてみること。(最低3パターンを試すこと)
input number (a.numer) = 10
input number (a.denom) = 20
input number (b.numer) = 30
input number (b.denom) = 40
[ 1/2 ] + [ 3/4 ] = [ 5/4 ]
[ 1/2 ] - [ 3/4 ] = [ -1/4 ]
[ 1/2 ] * [ 3/4 ] = [ 3/8 ]
[ 1/2 ] / [ 3/4 ] = [ 2/3 ]
プログラムを機能拡張する。