課程第五次作業
作業要求:
- 本次作業要求将程式寫成.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容器也是非常便利的。