当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++基础入门教程

用C++编程查找括号错误的问题

 //用栈来实现
//遇到左括号压栈
//遇到右括号弹栈.并匹配,若不匹配出错
//处理完后,若栈不位空,表示出错
//注意问题:
//1。出栈时没有考虑堆栈下溢的情形:类似"())))"的输入必然导致程序崩溃!

#include<iostream>
#include <cmath>
#include<fstream>
#include <stack>
#include <list>

using namespace std;// 在VC中c++无法用ios::nocreate,而用.h无法用exit

struct bracket
{
char 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 <bracket, list<bracket> > istack;
bracket X;
int row=1,line=0;

ifstream infile("f.cpp",ios::in/*|ios::nocreate*/);//定义输入文件流对象,以输入方式打开磁盘文件f.cpp
if(! infile)
{
cout<<"open error!"<<endl;
return 0;
//exit(1);
}
for(int i=0;i<200;i++)
{
X.bk=infile.get();
line++;
if(X.bk=='"')

//////////////////////////////////////////////////////////////////

// 进栈前去掉" " ' '的当作字符的括号首先//想到infile.ignore(n,'/*'),跳过,但无法计R各L,

//用while(){infile.ignore();line++},

//又会在当引号里字符奇偶性会可能// 导致"被跳过,没有终止条件,对奇偶判//断显得复杂了
//用Continue结束实现
while(infile.get()!='"')
{

continue;

line++;

}

 

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接