C++程序设计语言 计算器源码

本文提供了一段C++编程语言实现的计算器源码,该源码来源于教科书,并且经过改进,加入了命名空间和异常处理机制,确保程序的稳定性和健壮性。
摘要由CSDN通过智能技术生成

首先是课本最早出现的源码,可以运行

#include "pch.h"
#include <iostream>
#include<string>
#include<cctype>
#include<map>
#include<sstream>

using namespace std;

enum Token_value{

	NAME,NUMBER,END,
	PLUS='+',MINUS='-',MUL='*',DIV='/',
	PRINT=';',ASSIGN='=',LP='(',RP=')'

};
Token_value curr_tok = PRINT;

int no_of_errors;
double term(bool get);
string string_value;
double number_value;

double error(const string&s)
{
	no_of_errors++;
	cout << "error" << s << '\n';
	return 1;
}

Token_value get_token()
{
	char ch = 0;
	cin >> ch;
	switch (ch) {
	case 0:
		return curr_tok = END;
	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);
		cin >> number_value;
	default:
		if (isalpha(ch)) {
			string_value = ch;
			while (cin.get(ch) && isalnum(ch));
			string_value.push_back(ch);
			return curr_tok = NAME;
		}
		error("bad token");
		return curr_tok = PRINT;
		return curr_tok = NUMBER;
	}
}

double expr(bool get) {
	double left = term(get);
	for(;;)
		switch (curr_tok)
		{
		case PLUS:
			left += term(tr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值