PAT1034 有理數四則運算 20

2021-07-06 01:41:35 字數 1746 閱讀 7731

本題要求編寫程式,計算2個有理數的和、差、積、商。

輸入格式:

輸入在一行中按照「a1/b1 a2/b2」的格式給出兩個分數形式的有理數,其中分子和分母全是整型範圍內的整數,負號只可能出現在分子前,分母不為0。

輸出格式:

分別在4行中按照「有理數1 運算子 有理數2 = 結果」的格式順序輸出2個有理數的和、差、積、商。注意輸出的每個有理數必須是該有理數的最簡形式「k a/b」,其中k是整數部分,a/b是最簡分數部分;若為負數,則須加括號;若除法分母為0,則輸出「inf」。題目保證正確的輸出中沒有超過整型範圍的整數。

輸入樣例1:

2/3 -4/2

輸出樣例1:

2/3 + (-2) = (-1 1/3)

2/3 - (-2) = 2 2/3

2/3 * (-2) = (-1 1/3)

2/3 / (-2) = (-1/3)

輸入樣例2:

5/3 0/6

輸出樣例2:

1 2/3 + 0 = 1 2/3

1 2/3 - 0 = 1 2/3

1 2/3 * 0 = 0

1 2/3 / 0 = inf

解題思路:此題比較繁瑣,分模組編寫**

模組一,宣告含分子與分母組成的結構體

struct numbers;
模組二,找出最大公約數

int commondivisor(int a, int b)

return a;//返回目標值

}

模組三,將輸入的string字串轉化為整型的分子與分母的形式

numbers transform(string str)

num.fenmu = tmp;

--i;

k = 0;

tmp = 0;

if (str[0] != '-')

}if (str[0] == '-')

tmp = -1 * tmp;

}num.fenzi = tmp;

return num;

}

模組四,化簡輸出

void simplification(numbers num)

else

if (abs(a) > b)

else

}else

if (a < 0||b<0)

else

if (a >b)

else

}else

cout

<< '0';

}

分別再以四個模組實現加減乘除

void addf(string a, string b)

void subf(string a, string b)

void mulf(string a, string b)

void divf(string a, string b)

主函式

int main()
輸出結果—1

輸出結果—2

PAT 1034 有理數四則運算

1034 有理數四則運算 20 分 本題要求編寫程式,計算 2 個有理數的和 差 積 商。輸入在一行中按照a1 b1 a2 b2的格式給出兩個分數形式的有理數,其中分子和分母全是整型範圍內的整數,負號只可能出現在分子前,分母不為 0。分別在 4 行中按照有理數1 運算子 有理數2 結果的格式順序輸出...

PAT 1034 有理數四則運算

本題要求編寫程式,計算 2 個有理數的和 差 積 商。輸入格式 輸入在一行中按照 a1 b1 a2 b2 的格式給出兩個分數形式的有理數,其中分子和分母全是整型範圍內的整數,負號只可能出現在分子前,分母不為 0。輸出格式 分別在 4 行中按照 有理數1 運算子 有理數2 結果 的格式順序輸出 2 個...

PAT 1034 有理數四則運算 20

本題要求編寫程式,計算2個有理數的和 差 積 商。輸入格式 輸入在一行中按照 a1 b1 a2 b2 的格式給出兩個分數形式的有理數,其中分子和分母全是整型範圍內的整數,負號只可能出現在分子前,分母不為0。輸出格式 分別在4行中按照 有理數1 運算子 有理數2 結果 的格式順序輸出2個有理數的和 差...