【练习3.18】用下列语言编写检测平衡符号的程序
a.Pascal ( begin/end, ( ), [ ], { } )。
b.C语言( /* */, ( ), [ ], { })。
c.解释如何打印出错信息
Answer:
a和b本质是一样的,就写了b小题即C语言的检测。
基本思想就是用栈,除了注释符号有一点点麻烦要查看连续两个字符,其它的几组都是很轻松愉快。
具体的细节都放到注释里了,所以在文章上没必要说太多。
这题测试代码就不放了,基本就是自己拿个文本文件改来改去,在main函数里面就三行,总之是实测是能通过的。
1 //练习3.18新增,检查语言平衡符号 2 void checklang(ifstream &ifile) 3 { 4 if (ifile) 5 { 6 Stack<char> check; 7 //避免空栈导致getfirst()抛出异常 8 check.push('!'); 9 //string testall("()[]{}*/"); 10 string pushin("([{*"); 11 string popout(")]}/"); 12 char prev = '