
c++ 找错误 (括号匹配问题)
#include<iostream.h>#include<stdlib.h>constintmaxsize=100;//最大元素个数typedefcharDatatype...
#include<iostream.h>
#include<stdlib.h>
const int maxsize=100;//最大元素个数
typedef char Datatype;
class seqstack
{
int top;
Datatype *s;
public:
seqstack();//构造函数
~seqstack();//析构函数
void push(Datatype x);
void match(char *k);
};
seqstack temp;
seqstack::seqstack()
{
top=0;
s=new Datatype[maxsize];
}
seqstack::~seqstack()
{
delete []s;
}
void seqstack::push(Datatype x)
{
if(top==maxsize)
{
cout<<"栈满."<<endl;
exit(0);
}
else
{
s[top]=x;
}
}
bool ma(char a,char b)
{
if((a=='('&&b==')')||(a=='['&&b==']')||(a=='{'&&b=='}'))
return true;
else
return false;
}
void seqstack::match(char *k)
{
int u,v;
for(int i=0;k[i]!='\0';i++)
{
if(k[i]=='('||')'||'['||']'||'{'||'}')
{
temp.push(k[i]);
top++;
}
}
if(top%2==1)
{
cout<<"括号多余"<<endl;
}
else
{
u=top/2;
v=u+1;
while(u!=-1)
{
if(ma(s[u],s[v]))
{
u--;
v++;
}
else
cout<<"括号不匹配"<<endl;
}
if(u==-1)
cout<<"左右括号匹配正确"<<endl;
}
void main()
{
char p[10];
cout<<"请输入一个含括号的字符串"<<endl;
cin>>p;
temp.match(p);
}
运行后:
D:\Program Files\Microsoft Visual Studio\MyProjects\dddddss\xxcc.cpp(87) : error C2601: 'main' : local function definitions are illegal
D:\Program Files\Microsoft Visual Studio\MyProjects\dddddss\xxcc.cpp(94) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错. 展开
#include<stdlib.h>
const int maxsize=100;//最大元素个数
typedef char Datatype;
class seqstack
{
int top;
Datatype *s;
public:
seqstack();//构造函数
~seqstack();//析构函数
void push(Datatype x);
void match(char *k);
};
seqstack temp;
seqstack::seqstack()
{
top=0;
s=new Datatype[maxsize];
}
seqstack::~seqstack()
{
delete []s;
}
void seqstack::push(Datatype x)
{
if(top==maxsize)
{
cout<<"栈满."<<endl;
exit(0);
}
else
{
s[top]=x;
}
}
bool ma(char a,char b)
{
if((a=='('&&b==')')||(a=='['&&b==']')||(a=='{'&&b=='}'))
return true;
else
return false;
}
void seqstack::match(char *k)
{
int u,v;
for(int i=0;k[i]!='\0';i++)
{
if(k[i]=='('||')'||'['||']'||'{'||'}')
{
temp.push(k[i]);
top++;
}
}
if(top%2==1)
{
cout<<"括号多余"<<endl;
}
else
{
u=top/2;
v=u+1;
while(u!=-1)
{
if(ma(s[u],s[v]))
{
u--;
v++;
}
else
cout<<"括号不匹配"<<endl;
}
if(u==-1)
cout<<"左右括号匹配正确"<<endl;
}
void main()
{
char p[10];
cout<<"请输入一个含括号的字符串"<<endl;
cin>>p;
temp.match(p);
}
运行后:
D:\Program Files\Microsoft Visual Studio\MyProjects\dddddss\xxcc.cpp(87) : error C2601: 'main' : local function definitions are illegal
D:\Program Files\Microsoft Visual Studio\MyProjects\dddddss\xxcc.cpp(94) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错. 展开
1个回答
展开全部
#include<iostream.h>
#include<stdlib.h>
const int maxsize=100;//最大元素个数
typedef char Datatype;
class seqstack
{
int top;
Datatype *s;
public:
seqstack();//构造函数
~seqstack();//析构函数
void push(Datatype x);
void match(char *k);
};
seqstack temp;
seqstack::seqstack()
{
top=0;
s=new Datatype[maxsize];
}
seqstack::~seqstack()
{
delete []s;
}
void seqstack::push(Datatype x)
{
if(top==maxsize)
{
cout<<"栈满."<<endl;
exit(0);
}
else
{
s[top]=x;
}
}
bool ma(char a,char b)
{
if((a=='('&&b==')')||(a=='['&&b==']')||(a=='{'&&b=='}'))
return true;
else
return false;
}
void seqstack::match(char *k)
{
int u,v;
for(int i=0;k[i]!='\0';i++)
{
if(k[i]=='('||')'||'['||']'||'{'||'}')
{
temp.push(k[i]);
top++;
}
}
if(top%2==1)
{
cout<<"括号多余"<<endl;
}
else
{
u=top/2;
v=u+1;
while(u!=-1)
{
if(ma(s[u],s[v]))
{
u--;
v++;
}
else
{
cout<<"括号不匹配"<<endl;
break;
}
}
if(u==-1)
cout<<"左右括号匹配正确"<<endl;
}
}
void main()
{
char p[10];
cout<<"请输入一个含括号的字符串"<<endl;
cin>>p;
temp.match(p);
} 只是修改编译错误吗? 我改好了 ,还修改了个死循环 ,你少了一边大括号,还有case那加上了break
#include<stdlib.h>
const int maxsize=100;//最大元素个数
typedef char Datatype;
class seqstack
{
int top;
Datatype *s;
public:
seqstack();//构造函数
~seqstack();//析构函数
void push(Datatype x);
void match(char *k);
};
seqstack temp;
seqstack::seqstack()
{
top=0;
s=new Datatype[maxsize];
}
seqstack::~seqstack()
{
delete []s;
}
void seqstack::push(Datatype x)
{
if(top==maxsize)
{
cout<<"栈满."<<endl;
exit(0);
}
else
{
s[top]=x;
}
}
bool ma(char a,char b)
{
if((a=='('&&b==')')||(a=='['&&b==']')||(a=='{'&&b=='}'))
return true;
else
return false;
}
void seqstack::match(char *k)
{
int u,v;
for(int i=0;k[i]!='\0';i++)
{
if(k[i]=='('||')'||'['||']'||'{'||'}')
{
temp.push(k[i]);
top++;
}
}
if(top%2==1)
{
cout<<"括号多余"<<endl;
}
else
{
u=top/2;
v=u+1;
while(u!=-1)
{
if(ma(s[u],s[v]))
{
u--;
v++;
}
else
{
cout<<"括号不匹配"<<endl;
break;
}
}
if(u==-1)
cout<<"左右括号匹配正确"<<endl;
}
}
void main()
{
char p[10];
cout<<"请输入一个含括号的字符串"<<endl;
cin>>p;
temp.match(p);
} 只是修改编译错误吗? 我改好了 ,还修改了个死循环 ,你少了一边大括号,还有case那加上了break
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询