数据结构课程设计之简单计算器的实现

您所在的位置:网站首页 幂的运算知识结构图怎么画 数据结构课程设计之简单计算器的实现

数据结构课程设计之简单计算器的实现

2024-07-11 06:15| 来源: 网络整理| 查看: 265

一、问题陈述

从键盘上输入一算术表达式(中缀白大师),包括圆括号,计算出表达式的值。 要求:

程序对所输入的表达式作简单判断,如有错给出提示;实现算术四则运算(+、-、*、/)和平方(^)运算,能处理双目运算符:+和-;能将中缀算术表达式转换成后缀表达式并输出,并输出运算结果。 二、概要设计 2.1 概要简述

中缀表达式转为后缀表达式,从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于找顶符号(乘除优先加减)则栈顶元素依次出找并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。 后缀表达式也称为逆波兰表达式,计算方法为:新建一个表达式,如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。

2.2 存储结构表示 typedef struct {//数字栈结构体 double data[MAXSIZE]; int top; } opstack; typedef struct {//符号栈结构体 char data[MAXSIZE]; int top; } stack; 2.3 详细设计 2.3.1 判断中缀表达式是否合理 //判断中缀表达式是否合理 bool judge_infix(char str[]){ int temp=0; if(str[0]=='/'||str[0]=='*') return false; if(str[strlen(str)-1]'9') return false; for(int i=0; i='0'&&str[i-1]='0'&&str[i+1]='0'&&ch='0'&&a[i]top=0; } //取栈头 int GetTop(stack s, char *e) { if(s.toptopdata[--s->top]; } //入栈操作 void Push(stack *s, char e) { if(s->top>=MAXSIZE) printf("栈满!"); else s->data[s->top++]=e; } //判断栈空 int StackEmpty(stack s) { if(s.top==0) return 1; else return 0; } //计算表达式值 double ComputeExpress(char a[]) { opstack s; int i=0, value; float x1, x2, result; s.top=-1; while (a[i]!='\0') { if(a[i]!=' '&&a[i]>='0'&&a[i]='0'&&ch


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3