实验结论
1.实验内容2
(1)类graph的成员draw()中算法的简洁描述:
最外层for循环用来控制行数,for循环内第一个for循环用来输出符号前的空格(“总行数-当前行数”个空格),第二个for循环用来输出符号(“2*当前行数-1”个符号),一行输出完毕后,换至下一行,直至输出所有行。
(2)文件源码
- graph.h
#ifndef GRAPH_H
#define GRAPH_H
// 类Graph的声明
class Graph {
public:
Graph(char ch, int n); // 带有参数的构造函数
void draw(); // 绘制图形
private:
char symbol;
int size;
};
#endif
- graph.cpp
// 类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=1;i<=size;i++){ //控制行数
for (int j=1;j<=size-i;j++){ //输出符号前的空格
cout<<' ';
}
for (int m=1;m<=2*i-1;m++){ //输出图案符号
cout<<symbol;
}
cout<<endl; //换至下一行
}
}
- main.cpp
#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;
}
(3) Xcode 下运行结果截图:
2.实验内容3
(1)类Fraction的类图
Fraction
-top:int
-bottom:int
+Fraction()
+Fraction(t:int,b:int)
+Fraction(t:int)
+Fraction(f0:Fraction)
+add(f0:Fraction):void
+min(f0:Fraction) :void
+mul(f0:Fraction) :void
+div(f0:Fraction):void
+Compare(f0:Fraction):void
+set() :void
+show() :void
(2)文件源码
Fraction.h
#ifndef Fraction_h
#define Fraction_h
// 类Fraction的声明
class Fraction {
public:
Fraction(); //构造函数
Fraction(int t, int b); //构造函数的重载
Fraction(int t); //构造函数的重载
void add(Fraction &f0);//加法函数
void min(Fraction &f0);//减法函数
void mul(Fraction &f0);//乘法函数
void div(Fraction &f0);//除法函数
void Compare(Fraction &f0);//比较函数
void set(); //输入函数
void show(); //输出函数
private:
int top; //分子
int bottom; //分母
};
#endif /* Fraction_h */
Fraction.cpp
#include "Fraction.h"
#include <iostream>
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::set(){
cin>>top>>bottom;
}
//输出函数
void Fraction::show(){
cout << top << "/" << bottom <<endl;
}
//加法函数
void Fraction::add(Fraction &f0){
Fraction f1;
f1.top = top * f0.bottom + f0.top * bottom;
f1.bottom = bottom * f0.bottom;
f1.show();
}
//减法函数
void Fraction::min(Fraction &f0){
Fraction f1;
f1.top = top * f0.bottom - f0.top * bottom;
f1.bottom = bottom * f0.bottom;
f1.show();
}
//乘法函数
void Fraction::mul(Fraction &f0){
Fraction f1;
f1.top = top * f0.top;
f1.bottom = bottom * f0.bottom;
f1.show();
}
//除法函数
void Fraction::div(Fraction &f0) {
Fraction f1;
f1.top = top * f0.bottom;
f1.bottom = bottom * f0.top;
f1.show();
}
//比较大小函数
void Fraction::Compare(Fraction &f0) {
Fraction f1;
f1.top = top * f0.bottom - f0.top * bottom;
if(f1.top > 0){
cout << top << "/" << bottom << ">" << f0.top << "/" << f0.bottom <<endl;
}
else if(f1.top < 0) {
cout << top << "/" << bottom << "<" << f0.top << "/" << f0.bottom <<endl;
}
else{
cout << top << "/" << bottom << "=" << f0.top << "/" << f0.bottom <<endl;
}
}
main.cpp
#include <stdio.h>
#include "Fraction.h"
using namespace std;
int main() {
Fraction a;
Fraction b(3,4);
Fraction c(5);
a.show();
b.show();
c.show();
c.add(b);
c.min(b);
c.mul(b);
c.div(b);
c.Compare(b);
a.set();
a.show();
return 0;
}
(3) Xcode 下运行结果截图
实验总结与体会
对新学的构造函数的初始化方法还不够熟练。
对是否需要形参和返回值,以及返回值的类型不清楚。
原本我对多文件的运用一脸懵逼,通过这次实验,有种豁然开朗的感觉,所谓实践出真知~