《第五周实验报告2-1》---设计一个简单的分数类,完成对分数的几个运算

原创 2012年03月19日 20:43:04
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:   CFraction.cpp        
* 作    者:    计114-3 王兴锋   
* 完成日期:     2012    年   3  月   19  日
* 版 本 号:     V 1.0

* 对任务及求解方法的描述部分
* 输入描述: 设计一个简单的分数类,完成对分数的几个运算
* 问题描述: 调用各成员函数,完成基本的测试
* 程序输出: 按程序要求输出
* 程序头部的注释结束
*/
#include <iostream>

using namespace std;

class CFraction
{
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=0);		//输出:以8/6为例,style为0时,输出8/6;
									//style为1时,输出4/3;
									//style为2时,输出1(1/3),表示一又三分之一;
									//不给出参数和非1、2,认为是方式0
	
private:
	int find_factor();//找出最大公约数
	int nume;  // 分子
	int deno;  // 分母
	int j_nume;
	int j_deno;
	char ch;
};

CFraction::CFraction(int nu, int de)//构造函数
{
	nume = nu;
	deno = de;
}
void CFraction::Set(int nu, int de)//设置值
{
	if (de == 0)
	{
		cout << "您的输入有误!" << endl;
		exit(0);
	}

	nume = nu;
	deno = de;	
}
void CFraction::input()//输入
{
	cout << "请输入分数(nu/de):" << endl;
	cin >> nume >> ch >> deno;

	if (deno == 0)
	{
		cout << "您的输入有误!" << endl;
		exit(0);
	}
}
void CFraction::Simplify()//化简
{
	int fac;

	fac = find_factor();
	
	j_nume = nume / fac;
	j_deno = deno / fac;
}
void CFraction::amplify(int n)//放大n倍
{
	nume = n * nume;
	j_nume = n * j_nume;

	cout << "分数已放大" << n << "倍。" << endl;
}
void CFraction::output(int style)//输出
{
	switch(style)
	{	
		case 1:
			cout << "以4/3的形式输出为:" << j_nume << "/" << j_deno << endl;
			break;
		case 2:
			if (! (j_nume%j_deno))
				cout << "以1(1/3)的形式输出为:" << j_nume/j_deno << endl;
			else
				cout << "以1(1/3)的形式输出为:" << j_nume/j_deno << "(" << j_nume % j_deno << "/" << j_deno << ")" << endl;
			break;

		default :
		case 0:
		cout << "以8/6的形式输出为:" << nume << "/" << deno << endl;
		break;
	}
}
int CFraction::find_factor()//找最大公约数
{
	int temp, max, min;
	if (deno > nume)
	{
		max = deno;
		min = nume;
	}
	else
	{
		max = nume;
		min = deno;
	}

	do{
		temp = min;
		min = max % min;
		max = temp;
	}while(min != 0);

	return max;
}


void main()
{
	CFraction cf;//定义一个分数对象(初值为:nu=0,de=1)

	cf.Set(72,36);
	cf.Simplify();
	cf.amplify(3);
	cf.output(0);
	cf.output(1);
	cf.output(2);
	
	cout << endl;
	cf.input();
	cf.Simplify();
	cf.output();
	cf.output(1);
	cf.output(2);
	cf.amplify(3);
	cf.Simplify();
	cf.output(10);
	cf.output(1);
	cf.output(2);

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

c++设计一个分数类。要求:1.分类包含的分数运算有:连个分数的加、减、乘、除运算。

设计一个分数类。要求: 1.分数中包含的分数运算有:两个分数的加、减、乘、除运算。 2.分数的输出格式是:“分子/分母”。 3.编写一个测试程序进行测试。...
  • Bee0_0
  • Bee0_0
  • 2017年09月26日 20:21
  • 244

C++第5周任务【任务2】本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。

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

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

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

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

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

第十五周实验报告(任务二)【程序窗口设计之分数类】

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

C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,

#include using namespace std; class CFraction {private: int nume; // 分子 int deno; // 分...

《C++第八周实验报告3-1》---实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算

//【任务3】实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。 /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyrigh...

第十五周实验报告2(分数四则运算窗口程序)

程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:       ...
  • YTDXWZK
  • YTDXWZK
  • 2012年05月29日 09:04
  • 624

第九周实验报告任务3 定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。

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

第八周实验报告任务4 实现分数类中的运算符重载,分数类中的对象可以和整数型进行四则运算,且运算符合交换律。

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生  * All rights reserved. *...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《第五周实验报告2-1》---设计一个简单的分数类,完成对分数的几个运算
举报原因:
原因补充:

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