Part1

Part2:

// 类graph的实现
 
#include "graph.h" 
#include <iostream>

using namespace std;

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


// 成员函数draw()的实现
// 功能:绘制size行,显示字符为symbol的指定图形样式 
void Graph::draw()
{
	int i, j, k, sum;
	    sum = 2 * size - 1;   //计算列数
		for (i = 1; i <= size; i++)
		{
			for (j = 1; j <= size - i; j++)
				cout << ' ';//每一行(size-行数)个空格
			for (k = size - i + 1; k <= sum - j + 1; k++)
				cout << symbol;//在不是空格的地方输入字符
			cout << endl;
		}
  }//绘制size行

  在这里附上graph.cpp代码内容

 

Part3:

fraction.cpp
fraction.h
#include<iostream>
#include"fraction.h"
using namespace std;
int main()
{
    Fraction a;
    a.show();
    Fraction b(3, 4);
    b.show();
    Fraction c(5);
    c.show();
    addf(a, b).show();
    minf(a, c).show();
    mulf(b, c).show();
    divf(b, c).show();
    system("pause");
    system("cls");
    return 0;

}
main.cpp

 

这个实验中,我在fraction.cpp中采用了分数简化。

 

总结:

实验1的wasd控制可以用switch,调用移动一格的函数即可。

实验2中只要计算size和行数的关系就很好画出来

分数的简化利用的是寻找最大公约数,再除一下