[問題] 螢幕輸出增加浮點數
希望得到的正確結果:
修改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
06/30 14:40, 1F
推
06/30 16:48, , 2F
06/30 16:48, 2F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章