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

原创 2012年03月26日 18:24:45
 实验报告模板1. 本学期的报告均发到csdn博客。周一上机,周四前要完成本周上机任务并发布博文。

2. 本学期起程序头部的注释请自行加入,从本学期起不再统一给出。这是一个程序员良好习惯中的一部分,养成这个习惯。这也是展示个人专业品质的一个重要途径。另外,在程序中需要的地方,也请加注释。下面是我们一直在用的注释模板。

(程序头部注释开始)

* 程序的版权和版本声明部分

* Copyright (c) 2011, 烟台大学计算机学院学生

* All rights reserved.* 文件名称:

* 作 者: 张斌

* 完成日期:2012年3月26日

* 版 本 号: 5-2-1

* 对任务及求解方法的描述部分

* 输入描述: 设计分数类,完成对分数的运算

* 问题描述:

* 程序输出:

 * 程序头部的注释结束

#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 nume;
	int deno;
	int gcd(int , int );
	bool is_CF(int n, int d) ;
};

CFraction::CFraction(int nu, int de):nume(nu),deno(de){}

int main()
{
	CFraction cf;

	cf.Set(5, 6);

	cf.input();

	cout << "化简后的值是:" << endl;
	
	cf.Simplify() ;

	cf.output(0);

	cout << "再扩大四倍后是:" << endl;

	cf.amplify(4);

	cf.output(0);

	system("PAUSE");

	return 0;
}

void CFraction::Set(int nu, int de)
{
	nume = nu;

	deno = de;
}

void CFraction::input()
{
	char c;

	cout << "输入分数:(格式:nu/de)" << endl;

	while(1)  
	{  
		cin >> nume >> c >> deno;  

		if(c != '/')  
		{  
			cout << "格式不正确,请重新输入!" << endl;  
		}  

		else if(! is_CF(nume, deno))  
		{  
			cout << "数字非法,请重新输入!" << endl;  
		}  

		else  
		{  
			break;  
		}  
	}   
}

bool CFraction::is_CF(int n, int d)  
{  
	if(n < 0 || d <= 0)  
	{  
		return false;  
	}  

	return true;  
}  

void CFraction::Simplify()
{
	nume = nume / gcd(nume, deno);

	deno = deno / gcd(nume, deno);

}

int CFraction::gcd(int nu, int de)  
{  
    int t, r, a, b; 
	
	a = nu;

	b = de;

    if (a < b)     
    {  
        t = a;  
        a = b;                                   
        b = t;  
    }   

    while (b != 0)  
    {  
        r = a % b;  
        a = b;  
        b = r;  
    }  

    return a;  
}

void CFraction::amplify(int n)
{
	nume *= n;
}
 
void CFraction::output(int style)
{
	switch(style)
	{
	case(0):
		cout << nume << "/" << deno << endl;

		break;
	case(1):
		Simplify();

		cout << nume << "/" << deno << endl;

		break;
	case(2):
		Simplify();

		if(nume > deno)
		{
			int add;

			add = nume / deno;

			if(nume % deno == 0)
			{
				cout << add << endl;
			}

			else
			{
				cout << add << "(" << nume % deno << "/" << deno << ")" << endl;
			}
		}

		break;
	default:
		cout << nume << "/" << deno << endl;

		break;
	}
}

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

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

c++ 实现分数类

/* * fraction.h * 此分数类在输入分数后符号将只储存在分子位上,分母为正数。在进行加减乘除运算后会自动进行约分,也可自己执行约分操作。 * Created on: 2016年1...
  • liqiangzju
  • liqiangzju
  • 2017年01月21日 12:23
  • 921

C#实现的分数类

public struct RainbowFraction : IComparable, IComparable, IEquatable { #region 字段 ...
  • zhuyc110
  • zhuyc110
  • 2014年10月23日 00:03
  • 215

第五周 分数类

/* * 程序的版权和版本声明部分 * Copyright (c)2012, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称: object.cpp * 作...
  • jingshichen2012
  • jingshichen2012
  • 2013年04月12日 18:13
  • 856

分数四则运算(Java)acm.sdut

Problem Description 编写程序,实现两个分数的加减法 Input 输入包含多行数据; 每行数据是一个字符串,格式是"a/boc/d",其中a, b, c, d为数字(每个数字保...
  • sinat_37920793
  • sinat_37920793
  • 2017年03月25日 19:30
  • 590

c++分数加减乘除

#include using namespace std; int fn(int a,int b); class fraction//分数类声明 { public://外部接口 fraction...
  • lpcz2010
  • lpcz2010
  • 2015年10月30日 09:46
  • 800

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

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

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

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

第五周——分数类

#include #include using namespace std; class CFraction { private: int nume; // 分子...
  • u012313437
  • u012313437
  • 2014年03月27日 13:24
  • 520

实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算

问题及代码: /* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作 者:李磊涛 *完成时间:2016...
  • a1724002236
  • a1724002236
  • 2016年05月28日 14:08
  • 1060
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《第五周任务二》设计分数类,完成对分数的运算
举报原因:
原因补充:

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