77范文网 - 专业文章范例文档资料分享平台

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

来源:网络收集 时间:2019-02-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

{ }

double newDigit(double prior_digit, double now_digit, bool isHavePoint, double point_num) { }

double value; if(!isHavePoint) { } else { }

return value;

value = prior_digit + now_digit/(pow(10,point_num)); value = prior_digit*10 + now_digit; double value;

value = (double)ch - 48; return value;

Function.h

#ifndef FUNCTION_HEADER #define FUNCTION_HEADER

//友好的用户界面 void calUserInfo();

//用于记录处于栈内的优先级 int isp(char& ch);

//用于记录栈外的优先级 int osp(char& ch);

//相当于value = x op y;如果cal成功,然后将value的值返回r,用r来保存

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

//判断是否为字符 bool isDigit(char ch);

//判断是否为小数点 bool isPoint(char ch);

//判断是否为操作运算符 bool isOperator(char ch);

//将数字的字符状态转化成double状态 double turnDigit(char ch);

//如果几个数字或加一个小数点连在一起,这说明他们是同一个数字的不同位数,此函数将不同连在一起的数字 //组成新的数字

double newDigit(double prior_digit, double now_digit, bool isHavePoint, double point_num); #endif

Main.cpp

#include \#include \#include #include #include using namespace std; int main() {

char str[100] = \

AStack opnd; //用于存放数据

AStack optr; char now_ch = '=';

//用于存放操作符

//用于记录当前字符

char prior_ch = '\\0'; //用于记录前一个字符 double now_dig = 0; //用于记录当前一个数字 double prior_dig = 0; //用于记录前一个数字 double value = 0; //用于存放计算后的值 bool point = false; //用于判断是否有小数点

int point_num = 1; //用于记录数字后面的小数点位数 char topValue; //用于记录opnd的top上的值 char option = 'Y'; //用于判断是否要继续运算 do{

prior_dig = 0; now_ch = '='; opnd.push(prior_dig); optr.push(now_ch); system(\calUserInfo();

cout << \请输入表达式(以等号结束):\cin >> str;

bool exitPoint = false; /*对每个字符的处理*/ for(int i = 0; i < strlen(str); i++) {

now_ch = str[i];

/*判断是不是数字以及相关操作*/ if (isDigit(now_ch)) {

now_dig = turnDigit(now_ch); if (isDigit(prior_ch)) {

//在opnd中提前放一个0

*/

}

}

opnd.pop(prior_dig); if(exitPoint) { } else

now_dig = newDigit(prior_dig, now_dig,point,point_num); point = true;

now_dig = newDigit(prior_dig, now_dig,point,point_num); point_num++;

if(isPoint(prior_ch)) { }

value = now_dig; opnd.push(now_dig); prior_ch = now_ch;

opnd.pop(prior_dig);

now_dig = newDigit(prior_dig, now_dig,point,point_num); exitPoint = true; point_num++;

/*判断是不是小数点以及相关操作*/ else if (isPoint(now_ch)) { }

/*判断是不是操作符以及相关操作*/ else if (isOperator(now_ch)) {

/*对用于数字操作的相关标记量进行清空,方便下一次数字操作point = true; prior_ch = now_ch;

point = false; point = 0; exitPoint = false; point_num = 1;

/*看optr中是否有操作符存在,若不存在,则只放一个操作符进/* 但不进行任何操作*/ if(optr.length() <= 1) { }

/*optr已有操作符存在的话,开始进行优先级的比较*/ else {

optr.pop(topValue);

/* 栈内优先级小于栈外优先级*/ if(isp(topValue) < osp(now_ch)) { }

/*栈内优先级大于栈外优先级*/ else if(isp(topValue) > osp(now_ch)) {

if(now_ch == ')' && topValue == '(') { }

break; optr.push(topValue); optr.push(now_ch); prior_ch = now_ch; optr.push(now_ch); prior_ch = now_ch;

去*/

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库编写一个简易计算器的源代码(2)在线全文阅读。

编写一个简易计算器的源代码(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/475249.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: