编写一个简易计算器的源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AStack.h

#ifndef ASTACK_HEADER

#define ASTACK_HEADER

#include

using namespace std;

template class AStack

{

private:

int size;

int top;

Elem* listArray;

public:

AStack()

{ size = 100; top = 0; listArray = new Elem[100]; }

~AStack()

{ delete [] listArray; }

void clear() { top = 0; }

bool push(Elem& item)

{

if (top == size) return false;

else { listArray[top++] = item; return true; } }

bool pop(Elem& it)

{

if (top == 0) return false;

else { it = listArray[--top]; return true; }

}

bool topValue(Elem& it) const

{

if (top == 0) return false;

else { it = listArray[top - 1]; return true; } }

int length() const { return top; }

};

#endif

Function.cpp

#include "function.h"

#include "AStack.h"

#include

#include

void calUserInfo()

{

cout<<"\t* 智能计算器V1.0*"<

cout<<"\t*********************"<

cout<<"\t* 1 * 2 * 3 * + * - *"<

cout<<"\t* 4 * 5 * 6 * * * / *"<

cout<<"\t* 7 * 8 * 9 * 0 * % *"<

cout<<"\t* & * ^ * = * ( * ) *"<

cout<<"\t*********************"<

int isp(char& ch)

{

switch(ch)

{

case '=':

return 0;

break;

case '+':

case '-':

return 3;

break;

case '*':

case '/':

case '%':

return 5;

case '(':

return 1;

break;

case ')':

return 8;

break;

case '^':

case '&':

return 7;

break;

}

}

int osp(char& ch) {

switch(ch) {

case '=':

return 0;

break;

case '+':

case '-':

return 2;

break;

case '*':

case '/':

case '%':

return 4;

break;

case '(':

return 8;

break;

case ')':

break;

case '^':

case '&':

return 6;

break;

}

}

double extract(double x,double y)

{

return pow(x,1/y);

}

bool cal(char op, double x, double y, double& r) {

int o = 0;

switch(op)

{

case '-':

r = x - y;

break;

case '+':

r = x + y;

break;

case '/':

r = x / y;

break;

case '%':

(int) o = (int)x % (int)y;

r = (double)o;

break;

case '*':

r = x * y;

case '&':

r = extract(x,y);

break;

case '^':

r = pow(x,y);

break;

}

return true;

}

bool isDigit(char ch)

{

if (((int)ch >= 48) && ((int)ch <= 57))

return true;

else return false;

}

bool isPoint(char ch)

{

if (ch == '.')

return true;

else return false;

}

bool isOperator(char ch)

{

if ((ch == '=') || (ch == '-') || (ch == '+') || (ch == '(') || (ch == ')') || (ch == '*') || (ch == '&') ||(ch == '/') ||(ch == '%') ||(ch == '^'))

return true;

else return false;

}

double turnDigit(char ch)

相关文档
最新文档