实验 4 类和对象-2
四.实验
Graph
1.类Graph的声明
#ifndef GRAPH_H #define GRAPH_H // 类Graph的声明 class Graph { public: Graph(char ch, int n); // 带有参数的构造函数 void draw(); // 绘制图形 private: char symbol; int size; };
2.类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() { for(int i=0;i<size;i++) { for(int j=1;j<size-i;j++) { cout<<' '; } for(int k=1;k<2*(i+1);k++) { cout<<symbol; } cout<<endl; } // 补足代码,实现「实验4.pdf」文档中展示的图形样式 }
3.类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; }
4.运行结果
Fraction
1.类Fraction的声明
class Fraction { public: Fraction(); Fraction(int a); Fraction(int a, int b); void plus(Fraction &p,Fraction &q); void minus(Fraction &p,Fraction &q); void multiply(Fraction &p,Fraction &q); void divide(Fraction &p,Fraction &q); void compare(Fraction &p,Fraction &q); void output(); private: int top; int bottom; };
2.类Fraction的实现
#include <iostream> #include "fraction.h" using namespace std; Fraction::Fraction(): top(0), bottom(1){ } Fraction::Fraction(int a): top(a),bottom(1){ } Fraction::Fraction(int a, int b): top(a),bottom(b){ } void Fraction::output(){cout<<top<<'/'<<bottom<<endl; } void Fraction::plus(Fraction &p,Fraction &q){ top=p.top*q.bottom+p.bottom*q.top; bottom=p.bottom*q.bottom; } void Fraction::minus(Fraction &p,Fraction &q){ top=p.top*q.bottom-p.bottom*q.top; bottom=p.bottom*q.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::compare(Fraction &p,Fraction &q){ if(p.top/p.bottom>q.top/q.bottom) cout<<"a>b"<<endl; else if (p.top/p.bottom<q.top/q.bottom) cout<<"a<b"<<endl; else if (p.top/p.bottom==q.top/q.bottom) cout<<"a=b"<<endl; }
3.类Fraction的测试
#include <iostream> #include "fraction.h" using namespace std; int main() { Fraction a; Fraction b(3,4); Fraction c(5); Fraction d; d.plus(b,c); d.output(); d.minus(b,c); d.output(); d.multiply(b,c); d.output(); d.divide(b,c); d.output(); d.compare(b,c); return 0; }
4.运行结果
五.总结
这次实验让我对类的使用有了更进一步的掌握,但在第二题中如何简便的在通分后进行约分仍是一个问题