nguyendunghumg
01-04-2014, 11:29 AM
đề bài xây dựng ngăn xếp các kí tự nhập một chuỗi các kí tự và kiểm tra xem chuỗi có khớp với dấu ngoặc đơn không ? vd: abc(de)f là khớp còn )( là ko khớp:
#include <iostream>
#include <stack>
#include <string.h>
using namespace std;
class kiemtrangoacdon
{
private :
stack<int>A;
public :
void push(string S) //Day cac dau ngoac don vao stack
{
for (int i=0;i<S.length();i++)
{
if (S[i]=='(')
A.push(i);
else if (S[i]==')')
{
if (!A.empty())//Ki?m tra xem stack có r?ng không.
A.pop();
else
A.push(i);
}
}
}
int kiemtra()
{ //kiem tra co dung quy tac khong
if (A.empty())
return 1;
else
return 0;
}
void vitri()
{ //tra ve vi tri neu khong dung quy tac
while (!A.empty())
{
cout<<"o vi tri : "<<A.top()+1<<"\n";
A.pop();
}
}
};
int main()
{
int a;
stack<int>A;
kiemtrangoacdon P;
string S; //khai bao xau
cout<<"Nhap chuoi :";
getline(cin,S); //Nhap xau
P.push(S);
a=P.kiemtra();
if(a==1)
cout<<"Dung quy tac!\n";
else
{
cout<<"Khong dung quy tac!\n";
P.vitri();
}
getch();
return 0;
};
#include <iostream>
#include <stack>
#include <string.h>
using namespace std;
class kiemtrangoacdon
{
private :
stack<int>A;
public :
void push(string S) //Day cac dau ngoac don vao stack
{
for (int i=0;i<S.length();i++)
{
if (S[i]=='(')
A.push(i);
else if (S[i]==')')
{
if (!A.empty())//Ki?m tra xem stack có r?ng không.
A.pop();
else
A.push(i);
}
}
}
int kiemtra()
{ //kiem tra co dung quy tac khong
if (A.empty())
return 1;
else
return 0;
}
void vitri()
{ //tra ve vi tri neu khong dung quy tac
while (!A.empty())
{
cout<<"o vi tri : "<<A.top()+1<<"\n";
A.pop();
}
}
};
int main()
{
int a;
stack<int>A;
kiemtrangoacdon P;
string S; //khai bao xau
cout<<"Nhap chuoi :";
getline(cin,S); //Nhap xau
P.push(S);
a=P.kiemtra();
if(a==1)
cout<<"Dung quy tac!\n";
else
{
cout<<"Khong dung quy tac!\n";
P.vitri();
}
getch();
return 0;
};