利用栈写一个程序, 检验文本中的圆括号、方括号、花括号是否正确嵌套.
2014-06-02 11:11
246 查看
正确的嵌套是指: [()] 是合法的, 但 [(]) 就是错误的.
算法:
做一个空栈, 读入字符直至文件尾.
如果字符是一个开放符号, 则将其压入栈中.
如果字符是一个封闭符号, 那么若栈为空, 则报错; 若栈不为空, 则将栈元素弹出.
如果弹出的符号不是对应的开放符号, 则报错.
在文件尾, 如果栈非空则报错.
代码实现
算法:
做一个空栈, 读入字符直至文件尾.
如果字符是一个开放符号, 则将其压入栈中.
如果字符是一个封闭符号, 那么若栈为空, 则报错; 若栈不为空, 则将栈元素弹出.
如果弹出的符号不是对应的开放符号, 则报错.
在文件尾, 如果栈非空则报错.
代码实现
#include<iostream> #include<fstream> #include<stack> #include<cstdlib> using namespace std; bool match(string &file) { ifstream File; stack<char>CC; File.open(file.c_str()); if(!File) { cerr<<"Error!!\nUnable to find the file!"<<endl; exit(1); } char CH; int symb; while(File.get(CH)) { switch(CH) { case'(':symb=1;break; case'[':symb=2;break; case'{':symb=3;break; case'<':symb=4;break; case')':symb=8;break; case']':symb=7;break; case'}':symb=6;break; case'>':symb=5;break; default:symb=10; } if(symb>=1&&symb<=8) { if(symb<=4) { if(CC.size()!=0&&CC.top()<symb) return false; else CC.push(symb); } else { if(CC.size()==0) return false; else if(symb+CC.top()==9) CC.pop(); else return false; } } } if(CC.size()>0) return false; return true; } int main() { string filename; cout<<"Please enter your file name:"<<endl; getline(cin,filename); if(match(filename)) cout<<"****Congradulations!!****\nYour file's symbols are matched."<<endl; else cout<<"****Sorry man****\nPlease correct your file"<<endl; return 0; }
相关文章推荐
- 假设表达式中包含三种括号 圆括号方括号大括号 设计一个算法用顺序栈判断表达式中的括号是否正确配对
- 练习1-24: 编写一个程序,查找C语言程序中的基本语法错误,如圆括号,方括号以及花括号不配对等。要正确的处理引号(包括单引号,双引号)~转移字符序列与注释(如果读者想把该程序编写成完全通用的程序,难度会比较大。)
- 编写一个程序,查找C语言中的基本语法错误,如圆括号、方括号、花括号不配对等,正确处理引号与注释
- 检验某符号(如圆括号,方括号,花括号等)是否都成对出现
- 假设一个数学算法中包括圆括号(),方括号[],花括号{}三种类型,编写表达式的括号是否配对
- 括号配对:假设一个数学算式中包括圆括号"()",方括号”[]"和花括号“{}”三种类型,编写一算法判断表达式的括号是否配对。
- 验证花括号是否正确出现的c程序源代码
- 判断一个括号字符串是否匹配正确
- 编写一个程序,它从标准输入(终端)读取C源代码,并验证所有的花括号都正确的成对出现。
- 编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。
- 编写一个程序,它从标准输入(终端)读取C源代码,并验证所有的花括号都正确的成对出现。
- 给定一个由括号([{)]}其中之一或多个组成的字符串判断是否符合左右括号成对标准,不同括号可任意嵌套
- 编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现
- 编写一个程序,它从标准输入(终端)读取C源代码,并验证所有的花括号都正确的成对出现。
- C语言:编写一个程序,它从标准输入(终端)读取C源代码,并验证所有的花括号都正确的成对出现
- 编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现
- 一个猜测程序 用户心里选择一个数 让计算机询问用户是否正确并做控制 知道猜对数字(图)
- 【c语言】编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现
- 编写一个用栈来检查程序代码是否遗漏括号的程序
- c语言:编写一个程序,它从标准输入(终端)读取C源代码,并验证所有的花括号都正确的成对出现。