您的位置:首页 > 其它

括号匹配

2016-04-05 17:48 309 查看
#include<iostream>
using namespace std;
class lilang{
public:
lilang(){
b1=0;c1=0;
b2=0;c2=0;
b3=0;c3=0;
b4=0;c4=0;
b5=0;c5=0;
b6=0;c6=0;
b7=0;c7=0;
b8=0;c8=0;
}
void Input(){
for(int i=0;;i++)
{
cin>>a[i];
if(a[i]=='#')
break;
}
}
void Check(){
for(int i=0;a[i]!='#';i++)
{
switch(a[i])
{
case '{':b1++;c1=i;break;
case '}':b2++;c2=i;break;
case '[':b3++;c3=i;break;
case ']':b4++;c4=i;break;
case '(':b5++;c5=i;break;
case ')':b6++;c6=i;break;
case '<':b7++;c7=i;break;
case '>':b8++;c8=i;break;
}
}
if((b1==b2)&&(b3==b4)&&(b5==b6)&&(b7==b8))
cout<<"right"<<endl;
if((b1+b3+b5+b7)>(b2+b4+b6+b8))
{
cout<<"loss of right character ";
if(b1>b2)
cout<<"}";
if(b3>b4)
cout<<"]";
if(b5>b6)
cout<<")";
if(b7>b8)
cout<<">";
cout<<"."<<endl;
}
else if((b1+b3+b5+b7)<(b2+b4+b6+b8))
{
cout<<"The ";
if(b1<b2)
{
cout<<c2+1;
cout<<" character '}' is wrong."<<endl;
}
if(b3<b4)
{
cout<<c4+1;
cout<<" character ']' is wrong."<<endl;
}
if(b5<b6)
{
cout<<c6+1;
cout<<" character ')' is wrong."<<endl;
}
if(b7<b8)
{
cout<<c8+1;
cout<<" character '>' is wrong."<<endl;
}
}
}
private:
char a[100];
int b1;
int c1;
int b2;
int c2;
int b3;
int c3;
int b4;
int c4;
int b5;
int c5;
int b6;
int c6;
int b7;
int c7;
int b8;
int c8;

};
int main()
{
lilang data;
data.Input();
data.Check();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: