自顶向下以及类的应用(第五周报告(二))

原创 2012年03月21日 18:06:34

/* (程序头部注释开始)
 * 程序的版权和版本声明部分
 * Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
 * 文件名称: miao.cpp                            
* 作    者: 苗向前                            
* 完成日期: 2012        年  03     月20      日
 * 版 本 号:  V5.1       

* 对任务及求解方法的描述部分
 * 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
 */

#include <iostream>

using namespace std;

int gac(int,int);

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();				//按照"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
};
int main()
{
	CFraction c1,c2(3,27);
	c1.output(0);
	
	c2.set(3,27);
	c2.output();

	c1.input();
	c1.output(1);

	cout <<"c2:"<<endl;
	c2.output(0);
	c2.output(1);
	c2.output(2);

	cout<<"化简后c2:"<<endl;
	c2.simplify();
	c2.output(0);

	cout<<"增大5倍的c2:"<<endl;
	c2.output(0);
	



	system("pause");
	return 0;



}

//构造函数,初始化用

CFraction::CFraction(int nu ,int de)
{
	if (de != 0)
	{
    	nume = nu;
	    deno = de;
	}
	else
	{
		cout<<"初始化发生错误,退出程序";
		system("pause");
		exit(0);
	}
}

//置值,改变值时用

void CFraction::set(int nu , int de)
{
	if (de != 0)
	{
	  nume = nu;
	  deno = de;
	}
}

//按照"nu/de"的格式,如"5/2"的形式输入

void CFraction::input()
{
	int nu,de;
	char c;

	while(1)
	{
		
	  cout<<"按nu/de的格式输入:"<<endl;

	   cin >> nu >> c >> de;

	   if (c != '/')
	   {
		cout<<"格式不正确\n";
	   }
	   else if (de == 0)
	   {
		   cout<<"分母不能为零!/n";
	   }
	   else
	   {
		   break;
	   }
	   nume = nu;
	   deno = de;
	}
}
//化简(使分子分母没有公因子)

void CFraction::simplify()
{
	int i;
	i = gac(nume,deno);
	nume = nume / i;
	deno = deno / i;
}
//求最大公约数
int gac(int a ,int b)
{
	int r;
	while ((r = a % b) != 0)
	{
	      a = b;
		  b = r;
	}
	return b;
}
//放大n倍,如2/3放大5倍为10/3

void CFraction::amplify(int n)
{
	nume *= n ;
}
//输出:以8/6为例,style为0时,输出8/6;
//style为1时,输出4/3;
//style为2时,输出1(1/3),表示一又三分之一;
//不给出参数和非1、2,认为是方式0

void CFraction::output(int style)
{
	int i;

	switch(style)
	{
	case 0:
		
		  cout << nume << "/" << deno << endl;
		  break;
		
	case 1:
		
		  i = gac(nume,deno);
		  cout << nume / i << "/" <<deno << endl;
		  break;
		
	case 2:
		
			cout << nume/deno << "(" << nume % deno << "/" << deno << ")";
		
	default :
		
			cout << nume << "/" << deno << endl;
		
	}

}
	

运行结果:

 


上机感言:

               多次在一个地方出现错误,并且是毫不起眼却很重要的错误。关于参数的初始化值只在类中声明时出现,而在定义时却不能出现,这是很重要的。

 

 

 

 

 

 

 

 

 

 

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

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

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

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

第五周C++上机报告(三角形类之一)

/* * 程序的版权和版本声明部分 * Copyright (c)2012, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称: object.cpp * 作...
  • sdzbwxt
  • sdzbwxt
  • 2013年03月29日 11:06
  • 886

C++程序设计实验报告(四十)---第五周任务二

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

第五周C++作业 报告二。

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

第五周实验报告(二)

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

第五周实验报告(任务四)《学生类》

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

应用层--计算机网络自顶向下笔记(二)

应用层原理 主流体系结构 进程通信 运输服务 HTTP 概况 持续连接 报文格式 cookie Web缓存 FTP 电子邮件 SMTP 邮件访问协议 POP3 IMAP 基于Web DNS P2P 文...

伸展树C++类实现<二>自顶向下设计

上一篇主要基于父节点形式的自底向上的设计实现伸展树,这一篇将实现基于左右辅助树的自顶向下的设计。 这种方式不需要节点存储其父节点的指针。当我们沿着树向下搜索某个节点x时,将搜索路径上的节点及其子树移...

第十三周实验报告(任务二)【虚函数与抽象类的应用】

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:虚函...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自顶向下以及类的应用(第五周报告(二))
举报原因:
原因补充:

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