Open GitMory opened 4 months ago
using namespace std;
struct Nodo { char dato; Nodo* siguiente; };
class Pila { private: Nodo* cima; public: Pila() : cima(nullptr) {}
~Pila() { while (!esVacia()) { pop(); } }
void push(char valor) { Nodo* nuevoNodo = new Nodo(); nuevoNodo->dato = valor; nuevoNodo->siguiente = cima; cima = nuevoNodo; }
void pop() { if (esVacia()) { return; } Nodo* temp = cima; cima = cima->siguiente; delete temp; }
char tope() { if (esVacia()) { return '\0'; } return cima->dato; }
bool esVacia() { return cima == nullptr; } };
bool estanBalanceados(const string& expresion) { Pila pila; for (char c : expresion) { if (c == '(' || c == '{' || c == '[') { pila.push(c); } else if (c == ')' || c == '}' || c == ']') { if (pila.esVacia()) { return false; } char tope = pila.tope(); if ((c == ')' && tope == '(') || (c == '}' && tope == '{') || (c == ']' && tope == '[')) { pila.pop(); } else { return false; } } } return pila.esVacia(); }
string verificarBalanceo(const string& expresion) { if (estanBalanceados(expresion)) { return "BALANCEADO CORRECTAMENTE"; } else { int x1 =0, x2=0, y1=0, y2=0, z1=0, z2=0; for (char c : expresion) { switch(c) { case ')': x1++; break; case '(': x2++; break; case '}': y1++; break; case '{': y2++; break; case ']': z1++; break; case '[': z2++; break;
} } if (x1==x2 && y1==y2 &&z1 ==z2) { return "BALANCEADO INCORRECTAMENTE"; } else { return "NO ESTÁN BALANCEADOS"; } } return "NO ESTÁN BALANCEADOS";
}
int main() {
string expresion1 = "(A+B-[2*3]-C)"; string expresion2 = "(A+B-[2*3)-C]"; string expresion3 = "{(A+B-[2*3}"; string resultado = verificarBalanceo(expresion1); cout << resultado << endl; string resultado2 = verificarBalanceo(expresion2); cout << resultado2 << endl; string resultado3 = verificarBalanceo(expresion3); cout << resultado3 << endl;
return 0; }
include iostream>
include string>
using namespace std;
struct Nodo { char dato; Nodo* siguiente; };
class Pila { private: Nodo* cima; public: Pila() : cima(nullptr) {}
~Pila() { while (!esVacia()) { pop(); } }
void push(char valor) { Nodo* nuevoNodo = new Nodo(); nuevoNodo->dato = valor; nuevoNodo->siguiente = cima; cima = nuevoNodo; }
void pop() { if (esVacia()) { return; } Nodo* temp = cima; cima = cima->siguiente; delete temp; }
char tope() { if (esVacia()) { return '\0'; } return cima->dato; }
bool esVacia() { return cima == nullptr; } };
bool estanBalanceados(const string& expresion) { Pila pila; for (char c : expresion) { if (c == '(' || c == '{' || c == '[') { pila.push(c); } else if (c == ')' || c == '}' || c == ']') { if (pila.esVacia()) { return false; } char tope = pila.tope(); if ((c == ')' && tope == '(') || (c == '}' && tope == '{') || (c == ']' && tope == '[')) { pila.pop(); } else { return false; } } } return pila.esVacia(); }
string verificarBalanceo(const string& expresion) { if (estanBalanceados(expresion)) { return "BALANCEADO CORRECTAMENTE"; } else { int x1 =0, x2=0, y1=0, y2=0, z1=0, z2=0; for (char c : expresion) { switch(c) { case ')': x1++; break; case '(': x2++; break; case '}': y1++; break; case '{': y2++; break; case ']': z1++; break; case '[': z2++; break;
}
int main() {
return 0; }