[問題] 螢幕輸出增加浮點數

看板C_and_CPP (C/C++)作者 (比平凡少一點)時間16年前 (2010/06/30 12:05), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
希望得到的正確結果: 修改printrational,讓螢幕在列印分數時,後面能增加"=XXX.XX",如:4/5=0.80" 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) #include <iostream> #include <iomanip> using namespace std ; typedef struct { int num; int deno ; } rational ; rational readrational( void) ; int gcd(int, int) ; rational simplify(rational) ; void printrational( rational ) ; rational addrational( rational, rational) ; rational subrational(rational, rational) ; rational mulRational(rational, rational) ; rational divRational(rational, rational) ; int comp_ra(rational, rational) ; void sort(rational *, int) ; void printrationals(rational *, int) ; int main( ) { int n ; // 分數陣列最多存幾個分數( 假定<= 20 ) rational r1, r2, r3, rs[20] ; r1 = readrational( ) ; cout << "第一個分數 = " ; printrational(r1) ; r2 = readrational( ) ; cout << "第二個分數 = " ; printrational(r2) ; r3 = addrational(r1,r2) ; cout << "兩個分數相加 = " ; printrational(r3) ; cout << "兩個分數相減 = " ; printrational(subrational(r1,r2)) ; cout << "兩個分數相乘 = " ; printrational(mulRational(r1,r2)) ; cout << "兩個分數相除 = " ; printrational(divRational(r1,r2)) ; cout << "第一個分數小於等於第二個 = " << comp_ra(r1,r2) << '\n' ; printf("有幾個分數要排序 :") ; scanf("%d", &n) ; for ( int m = 0 ; m < n ; m++) rs[m] = readrational( ) ; printf("排序前 :\n") ; printrationals(rs, n) ; sort(rs, n) ; printf("排序後 :\n") ; printrationals(rs,n) ; return 0 ; } int gcd( int m, int n) { if ( m % n == 0 ) return n ; else return gcd( n, m % n) ; } rational readrational( void ) { rational r ; cout << "請輸入分子 : " ; cin >> r.num ; cout << "請輸入分母 : " ; cin >> r.deno ; return simplify(r) ; } rational simplify(rational r) { int t ; if ( r.deno < 0 ) { r.num *= -1 ; r.deno *= -1 ; } t = gcd(r.num < 0 ? -r.num : r.num, r.deno) ; r.num /= t ; r.deno /= t ; return r ; } void printrational(rational r) { cout << r.num << '/' << r.deno << '\n' ; } rational addrational(rational r1, rational r2) { rational r ; r.num = r1.num * r2.deno + r2.num * r1.deno ; r.deno = r1.deno * r2.deno ; return simplify(r) ; } rational subrational(rational r1, rational r2) { rational r ; r.num = r1.num * r2.deno - r2.num * r1.deno ; r.deno = r1.deno * r2.deno ; return simplify(r) ; } rational mulRational(rational r1, rational r2) { rational r ; r.num = r1.num * r2.num ; r.deno = r1.deno * r2.deno ; return simplify(r) ; } rational divRational(rational r1, rational r2) { rational r ; r.num = r1.num * r2.deno ; r.deno = r1.deno * r2.num ; return simplify(r) ; } int comp_ra(rational r1, rational r2) { return r1.num * r2.deno <= r2.num * r1.deno ; } void printrationals(rational rs[], int n) { for ( int m = 0 ; m < n ; m++ ) printrational(rs[m]) ; } void sort(rational rs[], int n) { int pass, j ; rational hold ; for ( pass = 1 ; pass <= n - 1 ; pass++ ) for ( j = 0 ; j <= n - 2 ; j++ ) if ( ! comp_ra(rs[j], rs[j+1] ) ) { hold = rs[j] ; rs[j] = rs[j+1] ; rs[j+1] = hold ; } system("PAUSE"); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.110.171 ※ 編輯: sealion 來自: 114.42.110.171 (06/30 12:08) ※ 編輯: sealion 來自: 114.42.110.171 (06/30 12:08)

06/30 14:40, , 1F
只有一行cout要改 把整個class附進來幹嘛
06/30 14:40, 1F

06/30 16:48, , 2F
好久沒看到cout與printf並存的程式碼了 @@
06/30 16:48, 2F
文章代碼(AID): #1CAiAcOj (C_and_CPP)
文章代碼(AID): #1CAiAcOj (C_and_CPP)