Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /** sa se verifice daa intr-o expresie parantezele se inchid corect: ex: (ab[c]d){e} */
- #include <iostream>
- #include <stack>
- #include <string.h>
- using namespace std;
- /** verifica daca o parenteza deschisa coincide cu una inchisa de acelasi tip*/
- bool estePereche(char deschis, char inchis){
- if (deschis == '(' && inchis == ')')
- return true;
- if (deschis == '[' && inchis == ']')
- return true;
- if (deschis == '{' && inchis == '}')
- return true;
- return false;
- }
- bool verificaParanteze(char *s){
- // stiva folosita in care vom insera parantezele
- stack<char> stiva;
- char c;
- int i;
- for(i=0;i<strlen(s);i++){
- if (s[i] == '(' || s[i] == '[' || s[i] == '{'){
- //parantezele deschise le pun in stiva
- stiva.push(s[i]);
- } else if (s[i] == ')' || s[i] == ']' || s[i] == '}'){
- //Daca e o paranteza inchisa extrag elementul din varful stivei si verificam daca e pereche.
- if (stiva.empty()){
- //am gasit o paranteza inchisa si in stiva nu am nimic
- return false;
- } else {
- c= stiva.top(); //iau elementul din varful stivei
- stiva.pop();//elimina elementul din varful stivei
- if(!estePereche(c,s[i])){
- return false;
- }
- }
- }
- }
- if (stiva.empty())
- return true;
- else
- return false;
- }
- int main(){
- char expresie[100];
- cout<<"Dati expresia cu paranteze:";
- cin>>expresie;
- if (verificaParanteze(expresie)){
- cout<<"Expresia " << expresie << " e valida";
- } else {
- cout<<"Expresia " << expresie << " e invalida";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement