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