试用C语言设计一个程序,程序的功能是接收任意输入一个算术表达式,判断表达式中的括号是否配对出现.功能要求及说明:(1) 任意输入一个算术表达式;(2) 利用栈,判断表达式中出现的
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/28 03:17:46
![试用C语言设计一个程序,程序的功能是接收任意输入一个算术表达式,判断表达式中的括号是否配对出现.功能要求及说明:(1) 任意输入一个算术表达式;(2) 利用栈,判断表达式中出现的](/uploads/image/z/11812-4-2.jpg?t=%E8%AF%95%E7%94%A8C%E8%AF%AD%E8%A8%80%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E7%A8%8B%E5%BA%8F%2C%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%8A%9F%E8%83%BD%E6%98%AF%E6%8E%A5%E6%94%B6%E4%BB%BB%E6%84%8F%E8%BE%93%E5%85%A5%E4%B8%80%E4%B8%AA%E7%AE%97%E6%9C%AF%E8%A1%A8%E8%BE%BE%E5%BC%8F%2C%E5%88%A4%E6%96%AD%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B8%AD%E7%9A%84%E6%8B%AC%E5%8F%B7%E6%98%AF%E5%90%A6%E9%85%8D%E5%AF%B9%E5%87%BA%E7%8E%B0.%E5%8A%9F%E8%83%BD%E8%A6%81%E6%B1%82%E5%8F%8A%E8%AF%B4%E6%98%8E%EF%BC%9A%EF%BC%881%EF%BC%89+%E4%BB%BB%E6%84%8F%E8%BE%93%E5%85%A5%E4%B8%80%E4%B8%AA%E7%AE%97%E6%9C%AF%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%9B%EF%BC%882%EF%BC%89+%E5%88%A9%E7%94%A8%E6%A0%88%2C%E5%88%A4%E6%96%AD%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B8%AD%E5%87%BA%E7%8E%B0%E7%9A%84)
试用C语言设计一个程序,程序的功能是接收任意输入一个算术表达式,判断表达式中的括号是否配对出现.功能要求及说明:(1) 任意输入一个算术表达式;(2) 利用栈,判断表达式中出现的
试用C语言设计一个程序,程序的功能是接收任意输入一个算术表达式,判断表达式中的括号是否配对出现.
功能要求及说明:
(1) 任意输入一个算术表达式;
(2) 利用栈,判断表达式中出现的括号是否配对出现,若括号序列是匹配的,提示:“匹配”;若不匹配,应报告错误的原因,如“左括号多余”或“右括号多余”或“左右括号不配对”等.
(3) 采用模块化设计.
测试数据
正确测例:();[()]; (())[]();[ ][(( ))]等
错误测例:(;);((;(]; [[( ))];(([]);[( ))]] 等
本人急用,回答正确者.再加100财富值
试用C语言设计一个程序,程序的功能是接收任意输入一个算术表达式,判断表达式中的括号是否配对出现.功能要求及说明:(1) 任意输入一个算术表达式;(2) 利用栈,判断表达式中出现的
//最近的栈作业~
#include<iostream>
using namespace std;
class Stack
{
private:
int maxSize;
int top;
int *p;
public:
Stack(int size)
{
maxSize=size;
top=-1;
p=new int[maxSize];
}
~Stack()
{
delete [] p;
}
void Clear() //清空栈
{
top=-1;
}
bool Push(const int value) //压入
{
if(top==maxSize-1)
{
cout<<"栈满溢出"<<endl;
return false;
}
else
{
p[++top]=value;
return true;
}
}
bool Pop(int &value) //读取栈顶元素的值并删除
{
if(top==-1)
{
cout<<"栈为空,不能进行删除操作"<<endl;
return false;
}
else
{
value=p[top--];
return true;
}
}
bool Top(int &value) //读取栈顶元素的值并不删除
{
if(top==-1)
{
cout<<"栈为空,不能读取栈顶元素"<<endl;
return false;
}
else
{
value=p[top];
return true;
}
}
bool IsEmpty() //栈空否?
{
if(top==-1)
return true;
else
return false;
}
bool IsFull() //栈满否?
{
if(top==maxSize-1)
return true;
else
return false;
}
void show() //查看栈内元素的值
{
int t=top;
cout<<"栈内元素:"<<endl;
while(t+1)
cout<<p[t--];
cout<<endl;
}
};
void match()
{
int i=0,flag=1,temp,flag2=1;
char s[50];
char c;
Stack formula(10);
cout<<"输入一个式子:\n";
cin>>s;
c=s[i];
while(c&&flag)
{
if(c=='('||c=='['||c=='{')
{
formula.Push(c);
flag2=0;
}
else if(c==')'||c==']'||c=='}')
{
if(formula.IsEmpty())
{
flag=0;
break;
}
formula.Pop(temp);
if(temp==c-1||temp==c-2);
else
{
flag=0;
break;
}
}
c=s[++i];
}
if(!formula.IsEmpty())
flag=0;
if(flag2)
cout<<"无括号\n";
else if(flag)
cout<<"括号配对正确\n";
else
cout<<"括号配对错误\n";
}
int main()
{
match();
return 0;
}