/* (程序頭部註釋開始)
* 程序的版權和版本聲明部分
* Copyright (c) 2011, 煙臺大學計算機學院學生
* All rights reserved.
* 文件名稱:分數類
* 作 者:韓冰
* 完成日期: 2012 年 x 月 x 日
* 版 本 號:
* 對任務及求解方法的描述部分
* 輸入描述:
* 問題描述:
* 程序輸出:
* 程序頭部的註釋結束
*/
#include <iostream>
#include <cmath>
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 = 0); //輸出:以8/6爲例,style爲0時,輸出8/6;
//style爲1時,輸出4/3;
//style爲2時,輸出1(1/3),表示一又三分之一;
//不給出參數和非1、2,認爲是方式0
};
int main (void)
{
CFraction BBQ;
BBQ.set (4, 2);
BBQ.output();
BBQ.input();
BBQ.simplify();
BBQ.output();
BBQ.amplify (250);
BBQ.output(1);
BBQ.output(2);
BBQ.output(250);
system ("pause");
return 0;
}
void CFraction::set(int nu, int de)
{
nume = nu;
deno = de;
}
void CFraction::input()
{
int a, b;
char c;
while (250)
{
cin >> a >> c >> b;
if (a > 0 && c == '/' && b > 0)
{
break;
}
else
{
cout << "輸入有問題,請重新輸入。" <<endl;
}
}
nume = a;
deno = b;
}
void CFraction::simplify()
{
if (nume > deno)
{
int temp, i = deno, p = nume;
while (i)
{
temp = i;
i = p % i;
p = temp;
}
nume /= p;
deno /= p;
}
}
void CFraction::amplify (int n)
{
nume *= n;
}
void CFraction::output(int style)
{
switch (style)
{
case 0:
cout << nume << '/' << deno << endl;
break;
case 1:
simplify();
cout << nume << '/' << deno << endl;
break;
case 2:
simplify();
cout << nume / deno << '(' << nume % deno << ')' << deno << endl;
break;
default:
cout << "錯誤!" << endl;
}
}
第五週實驗報告 任務二
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.