C++实例-括号错误查找的问题.docx

上传人:公**** 文档编号:542542005 上传时间:2024-03-01 格式:DOCX 页数:6 大小:12.94KB
返回 下载 相关 举报
C++实例-括号错误查找的问题.docx_第1页
第1页 / 共6页
C++实例-括号错误查找的问题.docx_第2页
第2页 / 共6页
C++实例-括号错误查找的问题.docx_第3页
第3页 / 共6页
C++实例-括号错误查找的问题.docx_第4页
第4页 / 共6页
C++实例-括号错误查找的问题.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《C++实例-括号错误查找的问题.docx》由会员分享,可在线阅读,更多相关《C++实例-括号错误查找的问题.docx(6页珍藏版)》请在金锄头文库上搜索。

1、 C+实例:括号错误查找的问题遇到左括号压栈,遇到右括号弹栈。并匹配,若不匹配出错;处理完后,若栈不位空,表示出错。留意问题:出栈时没有考虑堆栈下溢的情形:类似“()“的输入必定导致程序崩溃!#include#include#include#include#includeusing namespace std;/ 在VC中c+无法用ios:nocreate,而用.h无法用exitstruct bracketchar bk;int row;int line;A=,0,0,B=,0,0,C=(,0,0,a=,0,0,b=,0,0,c=),0,0;int dis=3;int main()stack

2、istack; bracket X;int row=1,line=0;ifstream infile(“f.cpp“,ios:in/*|ios:nocreate*/);/定义输入文件流对象,以输入方式翻开磁盘文件f.cppif(! infile)cout“open error!“endl;return 0;/exit(1);for(int i=0;i200;i+)X.bk=infile.get();line+;if(X.bk=“)/ 进栈前去掉“ “ 的当作字符的括号首先/氲絠nfile.ignore(n,/*),跳过。/用while()infile.ignore();line+,/又会在当引

3、号里字符奇偶性会可能/ 导致“被跳过,没有终止条件,考试,大提示对奇偶判/断显得简单了/用Continue完毕实现while(infile.get()!=“)continue;line+;if(X.bk=39)/ infile.ignore(20,39);while(infile.get()!=39)continue;line+;if(X.bk=n)/字符回车时行加1,列归0row+;line=0;if (X.bk=A.bk|X.bk=B.bk|X.bk=C.bk) /读到左括号进栈X.row=row;X.line=line;istack.push(X);/coutistack.size()e

4、ndl;if(X.bk=a.bk|X.bk=b.bk|X.bk=c.bk) /读到右括号出栈if(istack.size()=0) /栈为空时当前括号出错coutX.bk“ 坐标:“x“row“,y“dis=3;elseX.row=row;X.line=line;dis=fabs(X.bk-istack.top().bk);/当括号能匹配时出栈(=40, )=42,=91,=93,=123,=125利用这个关系if(dis=2) / /istack.pop(); /匹配时出栈 /elsecoutistack.top().bk“ 坐标:“x“istack.top().row“,y“istack.top().lineendl;coutX.bk“ 坐标:“x“row“,y“istack.pop();if(dis=2return 0;while(istack.size()!=0)coutistack.top().bk“ 坐标:“x“istack.top().row“,y“istack.top().lineendl;istack.pop();infile.close();return 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号