《第五周实验报告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
  • 686

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

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

C++实现:分数类

花了几个小时敲代码——测试——修改…… 总算搞定了 好累,睡觉去的 有问题欢迎提出,继续修改 首先是头文件CFraction.h:   #ifndef CFRACTION_H_ #def...
  • mfcing
  • mfcing
  • 2012年03月05日 22:20
  • 5507

JAVA分数类的实现

题目: 1、写一个分数类,实现分数的加、减、乘、除; 2、对下面分数从小到大排序:1/2 , 2/3 , 48/62 , 70/20, 9/25 我的解法如下,大家一起讨论讨论: package co...
  • lpz_java
  • lpz_java
  • 2011年04月17日 23:03
  • 1365

翁恺导师第1周编程题"设计一个表示分数的Fraction类”--网易云课堂

网易云课堂,翁恺老师的《Java语言程序设计进阶》第一周编程题目如下: 设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。 这个类的构造函数是:Fraction(i...
  • sinat_30245865
  • sinat_30245865
  • 2015年07月30日 22:51
  • 1127

C++实践参考——分数类中的运算符重载

【项目1-分数类中的运算符重载】   (1)实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。class CFraction { private: ...
  • sxhelijian
  • sxhelijian
  • 2016年05月19日 21:44
  • 3259

Java 小例子:模拟分数的类 Fraction

前一阵子 CSDN 博客奇慢无比,今天好些了。 这里是一个模拟分数运算的例子:Fraction 类。分数运算完后要用最大公约数除分子分母。所以这里也有个用辗转相除法求最大公约数的例子。另外在构造 Fr...
  • yidinghe
  • yidinghe
  • 2009年04月03日 10:15
  • 3259

黑马程序员-------Java笔记--------分数基本运算

———-android培训、java培训、java学习型技术博客、期待与您交流!——- 上次考试考一题分数题,看了半天没明白,分析了一下,编程考的还是思想。package string.de...
  • yt741504089
  • yt741504089
  • 2015年08月23日 12:16
  • 727

第1周编程题-表示分数类的Fraction

题目内容 设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。 这个类的构造函数是: Fraction(int a, int b)     构造一个a/...
  • lingle77
  • lingle77
  • 2015年07月13日 20:34
  • 2838

OC 创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。 要求:为类添加属性

#import /*创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。 要求:为类添加属性 */ @interface Fraction : NSObject { ...
  • MHTios
  • MHTios
  • 2014年08月12日 21:14
  • 5548
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《第五周实验报告2-1》---设计一个简单的分数类,完成对分数的几个运算
举报原因:
原因补充:

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