第四周C++上機報告(分數類的處理)
阿新 • • 發佈:2019-02-07
/* * 程式的版權和版本宣告部分 * Copyright (c)2013, 煙臺大學計算機學院學生 * All rightsreserved. * 檔名稱:score.cpp * 作 者:王昕彤 * 完成日期: 2013 年 4 月 1 日 * 版本號: v1.0 * 輸入描述:已經在程式中初始化 * 問題描述:分數處理 * 輸出描述:無 */ #include<iostream> using namespace std; class CFraction {private: int nume; // 分子 int deno; // 分母 public: CFraction(int nu=0,int de=1); //建構函式,初始化用 void set(int nu=0,int de=1); //置值,改變值時用 void input(); //按照"nu/de"的格式,如"5/2"的形式輸入 void simplify(); //化簡(使分子分母沒有公因子) void amplify(int n); //放大n倍,如2/3放大5倍為10/3 void output(int style); void output(); //輸出:以8/6為例,style為0時,原樣輸出8/6; //style為1時,輸出化簡後形式4/3; //style為2時,輸出1(1/3)形式,表示一又三分之一; //style為3時,用小數形式輸出,如1.3333; //不給出引數和非1、2,3,認為是方式0 }; CFraction::CFraction(int nu,int de) {nume=nu; deno=de; } void CFraction::set(int nu,int de) { nume=nu; deno=de; cout<<"按分數形式輸出為:"<<nume<<"/"<<deno<<endl; } void CFraction::input() {cout<<"請輸入分子,分母的值:"; cin>>nume>>deno; cout<<"按分數形式輸出為:"<<nume<<"/"<<deno<<endl; } void CFraction::simplify() { int min; if(nume<deno) min=nume; else min=deno; while(((nume%min)+(deno%min))!=0) { min=min-1; } nume=nume/min; deno=deno/min; cout<<"化簡後輸出為:"<<nume<<"/"<<deno<<endl; } void CFraction::amplify(int n) { cout<<"放大"<<n<<"倍輸出為:"<<(nume*n)<<"/"<<deno<<endl; } void CFraction::output(int style) {if(style==0) { cout<<"按分數形式輸出為:"<<nume<<"/"<<deno<<endl; } else if(style==1) {int a,b,c,d; int num1,num2,temp; num1=nume; num2=deno; c=nume; d=deno; if(num1>num2) { temp=num1; num1=num2; num2=temp; } a=num1; b=num2; while(b!=0) { temp=a%b; a=b; b=temp; } c=c/a; d=d/a; cout<<"化簡後輸出為:"<<c<<"/"<<d<<endl; } else if(style==2) {int i; if(nume>deno) { i=nume/deno; cout<<"以真分數形式輸出為:"<<i<<"("<<(nume-deno)<<"/"<<deno<<")"<<endl; } else cout<<"以真分數形式輸出為:"<<nume<<"/"<<deno<<endl; } else if(style=3) {double m; m=double(nume)/double(deno); cout<<"以小數形式輸出為:"<<m<<endl; } else cout<<nume<<"/"<<deno<<endl; } void CFraction::output() { cout<<"以原來形式輸出為:"<<nume<<"/"<<deno<<endl; } int main() {cout<<"第一個分數驗證為:"<<endl; CFraction no1; no1.set(12,6); no1.simplify(); no1.amplify(3); no1.output(2); cout<<"第二個分數驗證為:"<<endl; CFraction no2; no2.input(); no2.simplify(); no2.amplify(2); no2.output(); return 0; }
輸出結果: