实验4

Grahp

类Grahp的声明

#ifndef GRAPH_H
#define GRAPH_H

// 类Graph的声明 
class Graph {
	public:
		Graph(char ch, int n);   // 带有参数的构造函数 
		void draw(); 	// 绘制图形 
	private:
		char symbol;
		int size;
};


#endif

类Grahp的实现

// 类graph的实现
 
#include "graph.h" 
#include <iostream>
using namespace std;

// 带参数的构造函数的实现 
Graph::Graph(char ch, int n): symbol(ch), size(n) {
}


// 成员函数draw()的实现
// 功能:绘制size行,显示字符为symbol的指定图形样式 
//       size和symbol是类Graph的私有成员数据 
void Graph::draw() {
	int i,j;
	for(i=0;i<size;i++)
	{
		for(j=0;j<size+i;j++)
		{
			if(j<size-i-1)
			{
				cout<<" ";
			}
			else cout<<symbol;
		}
		cout<<endl;
	}
	// 补足代码,实现「实验4.pdf」文档中展示的图形样式 
}

类Graph的测试:定义Graph类的对象

#include <iostream>
#include "graph.h"
using namespace std;


int main()
{
	Graph graph1('*',5), graph2('$',7) ;  // 定义Graph类对象graph1, graph2 
	graph1.draw(); // 通过对象graph1调用公共接口draw()在屏幕上绘制图形 
	graph2.draw(); // 通过对象graph2调用公共接口draw()在屏幕上绘制图形
	
	return 0; 
} 

运行结果 运行环境:DEV

Fraction 类

类Fraction 的声明

//类Fraction的声明 
	class Fraction {
		public:
			Fraction();//初始化 
			Fraction(int t,int b);//提供两个初始化参数 
			Fraction(int t);//只提供一个初始化参数 
			void plus(Fraction &p,Fraction &q);//加法 
			void subtract(Fraction &p,Fraction &q);//减法 
			void multiply(Fraction &p,Fraction &q);//乘法 
			void divide(Fraction &p,Fraction &q); //除法 
			void compare(Fraction &q);//两个分数比较
			void roft(Fraction &q);//分母通分
			void roaf();//分母约分 
			void show();
		private:
			int top;
			int bottom;
	};

类 Fraction 的实现

//类 Fraction 的实现

#include <iostream>
#include "fraction.h"
using namespace std;

//构造函数的实现
Fraction::Fraction():top(0),bottom(1) {//初始化 
} 
Fraction::Fraction(int t,int b):top(t),bottom(b){//提供两个参数 
}
Fraction::Fraction(int t):top(t),bottom(1){//提供一个参数 
} 
//成员函数的实现 
void Fraction::plus(Fraction &p,Fraction &q){// 加法 
	top=p.top+q.top;
	bottom=p.bottom;
}
void Fraction::subtract(Fraction &p,Fraction &q){//减法 
	top=p.top-q.top;
	bottom=p.bottom;
}
void Fraction::multiply(Fraction &p,Fraction &q){//乘法 
	top=p.top*q.top;
	bottom=p.bottom*q.bottom;
} 
void Fraction::divide(Fraction &p,Fraction &q){//除法 
	top=p.top*q.bottom;
	bottom=p.bottom*q.top;
}
//通分 
void Fraction::roft(Fraction &q){
	bottom*=q.bottom;
	top*=q.bottom;
	q.top*=bottom/q.bottom;
	q.bottom=bottom;
}
//约分 
void Fraction::roaf(){
	int temp;
	temp=min(top,bottom);
	while(1)
	{
		if(top%temp==0&&bottom%temp==0)
		{
			break;
		}
		temp--;
	}
	top/=temp;
	bottom/=temp;
} 
//分数比较 
void Fraction::compare(Fraction &q){
	if(top>q.top)
	{
		cout<<"a>b"<<endl; 
	}
	else cout<<"a<b"<<endl;
}
void Fraction::show(){//输出 
	cout<<top<<"/"<<bottom<<endl;
}

main函数实现

#include <iostream>
#include "fraction.h"
using namespace std;

int main() 
{
	Fraction a(1,2),b(1,3),x;//定义三个变量 
	x.multiply(a,b);//乘法 
	x.show();//输出 积 
	x.divide(a,b);//除法 
	x.show();//输出 商 
	a.roft(b);//通分 
	x.plus(a,b);//加法 
	x.roaf();//约分 
	x.show();//输出 和 
	x.subtract(a,b);//减法 
	x.roaf();//约分 
	x.show();//输出 差 
	a.compare(b);//比较大小 
	return 0;
}

运行结果: 运行环境:DEV

这一次的实验让我对类与对象有了更加深入的认识,但还没到达熟练的程度,有很多简化的操作有想到,但是目前能力有限无法实现,比如第二个实验约分通分操作,可以直接放进加减法当中去,函数当中还有很多缺陷,今后会更加努力学习完善代码,提升自己的能力。

posted on 2018-04-22 12:50  21222121212  阅读(337)  评论(1编辑  收藏  举报