Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /** sa se verifice daca 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
- char stiva[100];
- int n=0;///nr de elemente din stiva, initial 0
- 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[n++]=s[i];
- cout<<"Pun in stiva: "<<s[i]<<endl;
- } else if (s[i] == ')' || s[i] == ']' || s[i] == '}') {
- ///Daca e o paranteza inchisa extrag elementul din varful stivei si verificam daca e pereche.
- if (n==0) { ///stiva e vida
- ///am gasit o paranteza inchisa si in stiva nu am nimic
- return false;
- } else {
- c= stiva[--n]; ///iau elementul din varful stivei, care este tot timpul "deschis"
- cout<<"Scot "<<c<<endl;
- if(!estePereche(c,s[i])) {
- return false;
- }
- }
- }
- }
- if (n == 0)
- 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