任意输入一段符合语法规范的高级语言源程序(任意一种高级语言等皆可),系统扫描该源程序中的各个括号,看其是否能够得以匹配,并输入其匹配的具体情况(即与其匹配的括号在文中的位置)。
具体要求:
1、所输入的高级语言中的括号类型包括{ }、[ ]和( )
2、各类括号之间需有一定的嵌套关系
3、对于注释中存在的括号,不做任何处理和匹配
能够去掉代码中多余的括号
#include<iostream>
#include<stack>
using namespace std;
bool Is_Match(char *str);
int main()
{
char a[50];
while(1){
cin>>a;
cout<<boolalpha<<Is_Match(a)<<endl;
}
return 0;
}
bool Is_Match(char *str)
{
if(str==NULL)
return 0;
stack<char> list;
while(*str!='\0')
{
if(*str=='(')
list.push(*str);
if(*str=='[')
list.push(*str);
if(*str=='{')
list.push(*str);
if(*str==')')
{
if(list.top()=='(')
list.pop();
else
return false;
}
if(*str==']')
{
if(list.top()=='[')
list.pop();
else
return false;
}
if(*str=='}')
{
if(list.top()=='{')
list.pop();
else
return false;
}
str++;
}
if(list.empty())
return true;
else
return false;
}
大神帮我弄下那个括号在文中的位置,我现在写的只能判断括号是否匹配。谢谢,急急急!!
具体要求:
1、所输入的高级语言中的括号类型包括{ }、[ ]和( )
2、各类括号之间需有一定的嵌套关系
3、对于注释中存在的括号,不做任何处理和匹配
能够去掉代码中多余的括号
#include<iostream>
#include<stack>
using namespace std;
bool Is_Match(char *str);
int main()
{
char a[50];
while(1){
cin>>a;
cout<<boolalpha<<Is_Match(a)<<endl;
}
return 0;
}
bool Is_Match(char *str)
{
if(str==NULL)
return 0;
stack<char> list;
while(*str!='\0')
{
if(*str=='(')
list.push(*str);
if(*str=='[')
list.push(*str);
if(*str=='{')
list.push(*str);
if(*str==')')
{
if(list.top()=='(')
list.pop();
else
return false;
}
if(*str==']')
{
if(list.top()=='[')
list.pop();
else
return false;
}
if(*str=='}')
{
if(list.top()=='{')
list.pop();
else
return false;
}
str++;
}
if(list.empty())
return true;
else
return false;
}
大神帮我弄下那个括号在文中的位置,我现在写的只能判断括号是否匹配。谢谢,急急急!!