课程第五次作业
作业要求:
- 本次作业要求将程序写成.cpp和.h分离的形式
根据设计的类图进行编码,搭建主体框架
git链接
头文件代码:
#include<vector>
#include<string>
#include<fstream>
#include<iostream>
using namespace std;
void InitPriorities();
extern string infilepath, outfilepath;
class Mutual //用户的交互类
{
public:
Mutual(string out) :out_file_name(out){}
//Mutual(string in, string out) :in_file_name(in), out_file_name(out){}
void init(); //初始化
void scan(float f); //该函数用于与用户交互,获取输入数据
void DisPlayAnswer(); //输出正确答案
void print(); //将统计结果输出给用户
private:
float answer;
int correctNum;
string in_file_name;
string out_file_name;
};
class Randomvalue //随机生成类
{
public:
Randomvalue();//初始化数字和符号
int randomNumber(); //用于随机生成数字
char randomOperation(); //用于随机生成运算符
private:
vector<char> sign;
vector<int> num;
};
class CreatExpresstion //算式类
{
public:
CreatExpresstion(){}
CreatExpresstion(string out) :out_file_name(out){}
template<typename T> string Tostring(T i);
void generateExpression(); //用于生成运算式
float calculateResult(); //计算结果
float caculate(float Operand1, float Operand2, char Operator);
private:
string expression;
float answer;
string out_file_name;
};
class Filestream //文件读写类
{
public:
//Filestream(string _infilepath, string _outfilepath);
int readFile(string _infilepath);
void clearfile(string s)
{
_ofs.open(s);
_ofs.close();
}
template <typename T> void writeFile(string _outfilepath, T t);
private:
string _InFilePath;
string _OutFilePath;
ifstream _ifs;
ofstream _ofs;
};
class Problem
{
public:
private:
string str1, str2;
Filestream F;
Randomvalue R;
CreatExpresstion C;
Mutual M;
};
对栈知识的探索
在计算机导论中初步认识到栈,在c的学习中初步用到栈来解决一些问题。栈的重要特点是“先进后出”利用这一特点,能解决很多实际问题中的次序问题。
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。
其实并不是很懂栈,对于四则运算器中计算结果使用了栈的思想,是在百度上查找时发现计算器的计算程序的原理是利用了栈来解决优先级的问题,所以对于栈有了更深层面的认识。在栈的使用中头文件stack,利用vector容器也是非常便利的。