第五周任务二分数类

原创 2012年03月24日 16:54:55
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* 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;
}

运行结果:


相关文章推荐

第五周任务二之分数类

源程序: /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:...

第五周任务二(分数类)

* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: 分数...

第五周任务二 分数

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:  ...

第五周任务2:构造分数“类”

#include using namespace std; int gcd(int,int); class CFraction {private: int nume; // 分子 ...

《第五周任务二》设计分数类,完成对分数的运算

实验报告模板1. 本学期的报告均发到csdn博客。周一上机,周四前要完成本周上机任务并发布博文。 2. 本学期起程序头部的注释请自行加入,从本学期起不再统一给出。这是一个程序员良好习惯中的一部分,养...

第五周任务2(分数的化简)

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: ...

第五周实验报告(任务三)《处理分数》

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:处理...

第五周项目2分数类

/* * 程序的版权和版本声明部分: * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cp...

第五周实验报告(二)分数化简

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生  * All rights reserved. * 文件名称:  ...

第五周项目2-分数类的雏形

/* *程序的版权和版本声明部分: *Copyright(c)2014,烟台大学计算机学院学生 *All rights reserved. *文件名称: *作者:田成琳 *完成日期:2014 年 3...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第五周任务二分数类
举报原因:
原因补充:

(最多只允许输入30个字)