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