栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 编写一个计算算术表达式的程序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 编写一个计算算术表达式的程序

实验一: 编写一个计算算术表达式的程序

一:程序的设计内容 输入一个表达式; 采用栈的方式将中缀转后缀(操作符入栈); 再由后缀求值。

二:基本要求 编写栈; 使用模板类; 所有数可为个位数; 可以省略括号。

三:分析程序及实验方法 擅于调用模板函数; 多查阅资料,多看典例;

如计算:3*((2+3)-(5-3)^3) 结果为-66

 部分功能

1、优先级判断

char Precede(char ch1,char ch2) 
{ 
	char ch; 
	switch(ch1) 
	{ 
	case '+': 
	case '-': 
		{ 
			switch(ch2) 
			{ 
			case '+': 
			case '-': 
			case ')': 
			case '#': 
				ch='>';
				break; 
			case '*': 
			case '/': 
			case '(': 
			case '^':
				ch='<';break; 
			
			} 
			break; 
		} 
	case '*': 
	case '/': 
	case '%':
		{ 
			if(ch2=='(') 
				ch='<';
			else if(ch2 == '^')
				ch = '<';
			else 
				ch='>'; 
			break; 
		} 
	case '(': 
		{ 
			if(ch2==')') 
				ch='='; 
			else 
				ch='<'; 
			break; 
		} 
	case ')': 
		{ 
			ch='>'; 
			break; 
		} 
	case '=': 
		{ 
			if(ch2=='=') 
				ch='='; 
			else 
				ch='<'; 
			break; 
		} 
	case '^':
		{
		if(ch2 == '(') 
			ch = '<';
		else 
			ch ='>';
		break;
		}
	case 'r':case '#':
		{
			if(ch2 =='r'||ch2 == '#')
				ch = '=';
			else
				ch='<';
			break;
		}
	} 
	return(ch); 
} 

2、结果计算

double calc(double x,char ch,double y) 
{ 
	double z; 
	switch(ch) 
	{ 
	case '+': z=x+y; break; 
	case '-': z=x-y; break; 
	case '*': z=x*y; break; 
	case '/': z=x/y; break; 
	case '%': z=x/y; break;
	case '^':z=pow(x,y);break;

	} 
	return(z); 
}

3、求后缀表达式

double middexpression(char *exp)
{
	stack *opnd=new(stack); 
	stack *optr=new(stack); 

	char ch = *exp;
	double x= 0,y,z;
	double result; 
	optr->push('#'); 
	while(ch != '')
	{
		if(ch >= '0' && ch <= '9')
		{
			x = ch -48;
			opnd->push(x);
			ch = *++exp;
			if(ch >='0' && ch <= '9')
			{
				cout<<"不符合要求,运算数必须是0~9之间的数"<gettop(),ch))
			{
			case '<':  
				optr->push(ch);
				ch =*++exp;
				if(ch == '')
				{
					cout<<"表达式错误,操作符不能作结尾!"<':
					
					break;
			default:
				break;
			}
		}else if(ch != '' && !Operator(ch)&&ch !=' ')
		{
			cout<<"不符合要求,只能进行:+,-,*,/,^,(,)运算"<sizeofstack() > 2)
			{
				if(optr->gettop() == '(')
				{
					cout<<"表达式中的'('没有')'与之相对应!"<gettop(),'#'))
				{
				case '<':
					
					break;
				case '>':
					
					break;
				default:
					break;
				}
			}
		}
	}
	result = (opnd->pop());
	return result;

}

4、主函数

void main(void)//程序入口函数 
{ 
	char exp[50] ={0};
	cout<<"请输入中缀表达式(以回车结束):"<>exp;
	cout< 

如需完整源码请私信

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/429524.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号