关闭

第五周任务二分数类

229人阅读 评论(0) 收藏 举报
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称: 分数类                          
* 作    者: 刘杨                           
* 完成日期: 2012 年 3 月 21 日
* 版 本 号:         
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
#include<iostream>
using namespace std;
int gcd(int a,int b);
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();				
	void Simplify();			
	void amplify(int n);		
	void output(int style=0);		
};
int main()
{
	CFraction cfrac1;
	cfrac1.output(0);
    cfrac1.Set(2,3);
	cfrac1.output(0);
	CFraction cfrac2;
	cfrac2.input();
	cfrac2.Simplify();
	cfrac2.output(0);
	cfrac2.amplify(2);
	cfrac2.output(0);
	cfrac2.output(1);
	cfrac2.output(2);
	system("pause");
	return 0;
}
//构造函数
CFraction::CFraction(int nu, int de)
{
	nume = nu;
	deno = de;
}
//改变分数的值
void CFraction::Set(int nu, int de)
{
	nume = nu;
	deno = de;
	return ;
}
//输出分数
void CFraction::input()
{
	char c1;
	cout << "请输入分数(格式 nu/de):";
	while(1)
	{
		cin >> nume >> c1 >> deno;
		if(c1 != '/')
		{
			cout << "格式不正确,请重新输入" << endl;
		}
		else if(deno == 0)
		{
			cout << "分母不能为零,请重新输入" << endl;
		}
		else break;
	}
	return ;
}
//化简,使分子分母没有公因子
void CFraction::Simplify()
{
	int i;
    i=gcd(nume,deno);
    nume = nume / i;
	deno = deno / i;
    return;
}
void CFraction::amplify(int n)
{
	nume = nume * n;
	return ;
}
//输出分数
void CFraction::output(int style)
{
	int n,c1,nu,de;
	switch(style)
	{
	case '0':
		cout << nume << "/" << deno << endl;
		break;
	case 1:
		c1 = gcd(nume,deno);
		nu = nume / c1;
		de = deno / c1;
		cout << nu << "/" << de << endl;
		break;
	case 2:
		c1 = gcd(nume,deno);
		nu = nume / c1;
		de = deno / c1;
		n = nu / de;
		nu = nu % de;
		cout << n << "(" << nu << "/" << de << ")" << endl;
		break;
	default:
		cout << nume << "/" << deno << endl;
		break;
	}
	return ;
}
int gcd(int x,int y)
{
	int t;
	while(y > 0)
	{
		t = x % y;
		x = y;
		y = t;
	}
	return x;
}

运行结果:


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:51570次
    • 积分:888
    • 等级:
    • 排名:千里之外
    • 原创:38篇
    • 转载:0篇
    • 译文:0篇
    • 评论:8条
    最新评论