第五週任務(二)

 * (程序頭部註釋開始)

* 程序的版權和版本聲明部分

* Copyright (c) 2011, 煙臺大學計算機學院學生

*文件名稱: 簡單的分數類

* 作 者: 齊豔紅

* 完成日期: 2011年3 月 20日

 版 本 號:

* 對任務及求解方法的描述部分:製造函數,初始化用

 輸入描述:

* 問題描述: 對分子進行輸入,放大,化簡等工作

* 程序輸出:

#include<iostream>
#include<Cmath>
using namespace std;
int gcd(int x,int y );	
class CFraction
{private:
int nume;  // 分子
int deno;  // 分母
public:
	CFraction(int nu=0,int de=1);  //構造函數,初始化用
	void set(int nu,int de);    //置值,改變值時用
	void input();				//按照"nu/de"的格式,如"5/2"的形式輸入
	void simplify();			//化簡(使分子分母沒有公因子)
	void amplify(int n);			//放大n倍,如2/3放大5倍爲10/3
	void output(int style=0);		//輸出:以8/6爲例,style爲0時,輸出8/6;
	//style爲1時,輸出4/3;
	//style爲2時,輸出1(1/3),表示一又三分之一;
	//不給出參數和非1、2,認爲是方式0
};
void CFraction::set(int nu=0,int de=1)
{
	if(de!=0)
	{
		nume=nu;
		deno=de;
	}
}
CFraction::CFraction(int nu,int de)
{
	if(de!=0)
	{
		nume=nu;
		deno=de;
	}
	else
	{
		cout<<"分母不能置爲0!"<<endl;
		exit(0);
	}
	
}
void CFraction::input()
{
	char c;
	int nu,de;
	while(1)
	{
		cout<<"輸入分數(m/n)";
		cin>>nume>>c>>deno;
		if(c!='/')
			cout<<"格式不對!"<<endl;
		else if(de==0)
			
			cout<<"分母不能爲0!"<<endl;
		
		else 
			break;
	}
	nume=nu;
	deno=de;
}
void CFraction::simplify()
{
	int n=gcd(nume,deno);
	nume=nume/n;
	deno=deno/n;
}
void CFraction::amplify(int n)
{
	nume*=n;
}
int gcd(int x,int y)
{
	int r;
	while(r!=0)
	{
		r=x%y;
		x=y;
		y=r;
	}
	return x;
}
void CFraction::output(int style)
{
	switch (style)
	{
	case 0:
		cout<<nume<<'/'<<deno<<endl;
		break;
    case 1:
		int i;
	       i=gcd(nume,deno);
		   cout<<(nume/i)<<"("<<")"<<endl;
		   break;
	case 2:
		int de,nu;
		i=gcd(nume,deno);
		nu=nume/i;
		de=deno/i;
	case 3:
		cout<<nume/double(deno)<<endl;
		break;
	default:
		cout<<nume<<'/'<<deno<<endl;
	}
}
int main()
{
    CFraction c1;
	c1.output(0);
	c1.set(3,4);
	c1.simplify();
	c1.input();
	c1.output(0);
	c1.simplify();
	c1.output(0);
	return 0;
	
}


* 程序頭部的註釋結束*/

發佈了66 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章