2017《面向对象程序设计》课程作业五

Github

类的框架

这里贴上两张图来描述我的框架(.cpp和.h分别对应)

类的编码

由于代码过长,这里只展示expression.hfraction.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

目前平时主要用到的关于栈的知识就是这些,之后会继续补充。。。。

原文地址:https://www.cnblogs.com/gjx031602211/p/6895505.html