- 2
- 0
- 约8.39千字
- 约 6页
- 2016-10-06 发布于广东
- 举报
c设计一个单计算器
执行代码 c++
#include iostream.h
#include string
using namespace std;
enum Token_value{
NAME, NUMBER, END,
PLUS = +, MINUS = -,MUL = *,DIV = /,
PRINT = ;,ASSIGN = =,LP = (,RP = )
};
Token_value curr_tok = PRINT;
// fuction list//////////////////////////////////////
double expr(bool get);
double term(bool get);
double prim(bool get);
Token_value get_token();
double error(const string s);
//////////////////////////////////////////////////////////
double expr(bool get) //plus and minus
{ double left = term(get);
for(;;)
{ switch(curr_tok){
case PLUS:
left+=term(true);
break;
case MINUS:
left-=term(true);
break;
default:
return left;
}
}
}
double term(bool get) // multiply and divide
{ double left = prim(get);
for(;;)
{ switch(curr_tok){
case MUL:
left*=prim(true);
break;
case DIV:
if(double d = prim(true)){ // no zero!!
left/= d;
break;
}
return error(divide by zero!!\n);
default :
return left;
}
}
}
double number_value;
double string_value;
double prim(bool get)
{ if(get) get_token();
switch(curr_tok){
case NUMBER:
{ double v = number_value;
get_token();
return v;
}
case NAME:
{ double v;
//double v = table[string_value];
//this table reserved the name mapped with variable
//now we dont use it!
if(get_token()==ASSIGN)
v = expr(true);
return v;
}
case MINUS: // negative
{ return -prim(true);
}
case LP:
{ double e = expr(true);
if(curr_tok!=RP)return error()expected);
get_token(); // absorb )
return e;
}
default:
return error(primary expected); // no primary
}
}
Token_value get_token()
{ char ch =0;
cinch;
switch(ch){
case 0:
return curr_tok=END; //return and assignment
case ;:
case *:
case /:
case +:
case -:
case (:
case ):
case =:
return curr_tok = Token_value(ch);
case 0:case 1:case 2:case 3:case 4:
case 5:case 6:case 7:case 8:case 9:
case .:
cin.putback(ch);
cinnumber_value;
return curr_tok = NUMBER;
default:
if(isalpha(ch))
{ cin.putback(ch);
cinstring_value;
您可能关注的文档
- 9年级新目标英全部单词填写表.doc
- =工装工程施工同改后.doc
- A++账务系统作手册-单位版.doc
- A-1-13通县两基工作台帐.doc
- A++综合财务理系统操作手册(用户简化版)v6.1.1.doc
- A-A类工程档卷内目录行).doc
- A01-第十一希望杯数学竞赛试题高一第1试.doc
- A4地块基础评报告.doc
- AA-7003全自动火焰 石墨炉原子吸收分光光度计便携式光谱仪 手提式光谱仪.docx
- A8协同管理软V3.10sp2安装维护手册.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- CSAE 295.3-2023 车路云一体化系统 第3部分:路云数据交互规范.pdf
- 德国Navilas眼底导航激光机器人在远程医疗与糖网治疗中应用与发展.pdf VIP
- 河北农信社真题试卷答案(3篇).docx VIP
- 商业计划书模块化制作与演示设计 课件汇总 第1-13章 商业计划书概述-商业计划演示过程的四大核心环节与常见问题.pdf VIP
- 城市道路“白改黑”工程施工组织设计[1].doc VIP
- 2025年宁夏高职院校分类考试文化基础测试(英语).docx VIP
- 2026年高考作文备考之诺贝尔奖人物素材(话题角度+写作示例+时评).docx VIP
- 可口可乐中国技术标准瓶(桶)装 饮用水品控手册-技术标准(V10)Packaged+Water+Quality+Control+Manual+-+July+201707.pdf
- 固态电解质的界面工程.docx VIP
- 浙大中控DCS图形编程使用手册.doc VIP
原创力文档

文档评论(0)