2017《面向对象程序设计》课程作业五
Github
类的框架
这里贴上两张图来描述我的框架(.cpp和.h分别对应)
类的编码
由于代码过长,这里只展示expression.h
和fraction.h
;其余可在Github上查看。
/*************************************************************
文件名:expression.h
作者:盖嘉轩 日期:2017/05/09
描述: expression.cpp对应头文件
*************************************************************/
#pragma once
#include"fraction.h"
#include"auxiliary_functions.h"
#include<iostream>
#include<vector>
using namespace std;
const int kMax = 1000;
class Expression
{
private:
vector<string> m_expressionUint;
string m_infix;
char m_postfix[kMax];
Fraction m_result;
public:
Expression();
char RandomOperation(char ifMultiplyDivide);
string GenerateInfixExpression(int low, int high, int parameterNumber, char ifMultiplyDivide, char ifFraction, char ifBracket);
void TransferInfixIntoPostfix();
string CalculateResult();
bool IsOnly(string expression);
};
/*************************************************************
文件名:fraction.h
作者:盖嘉轩 日期:2017/05/09
描述: fraction.cpp对应头文件
*************************************************************/
#pragma once
#include"auxiliary_functions.h"
#include<iostream>
using namespace std;
class Fraction
{
private:
int m_nnumerator, m_ndenominator;
string m_snumerator, m_sdenominator;
public:
Fraction();
void GetFraction(int l, int h);
bool isDivisorZero();
bool IsInt();
void TransferIntIntoFraction(int up, int down);
void Simplify();
string TransferIntoStringNoInt();
string TransferIntoString();
friend const Fraction operator +(Fraction frac1, Fraction frac2);
friend const Fraction operator -(Fraction frac1, Fraction frac2);
friend const Fraction operator *(Fraction frac1, Fraction frac2);
friend const Fraction operator /(Fraction frac1, Fraction frac2);
};
栈的学习
- 栈的定义
栈是只能在某一端插入和删除的特殊线性表。
用桶堆积物品,先堆进来的压在底下,随后一件一件往上堆。取走时,只能从上面一件一件取。堆和取都在顶部进行,底部一般是不动的。
栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶;另一端称为栈底。插入一般称为进栈,删除则称为退栈。栈也称为后进先出表
- C++栈的标准库函数
使用标准库的栈时,应包含相关头文件: #include<stack>
栈的定义:stack<类型>变量名
成员函数:
-
push(a)//将元素a压入栈顶
-
pop()//删除栈顶元素
-
top()//返回栈顶元素
-
size()//返回栈中元素的个数
-
empty()//如果栈为空则返回true, 否则返回false
目前平时主要用到的关于栈的知识就是这些,之后会继续补充。。。。