Está en la página 1de 9

Damaris Sarai Rojas Patana

2do “A”
Sistemas Informáticos

INTITUTO TÉCNICO
COMERCIAL LA PAZ

CARRERA SISTEMAS INFORMATICOS


“PRÁCTICA FINAL – (3RA EVALUACIÓN)”
ESTRUCTURA DE DATOS

ASIGNATURA: Estructura de Datos


DOCENTE: Lic. Herbert Torrez
ESTUDIANTE: Damaris Sarai Rojas Patana
Damaris Sarai Rojas Patana
2do “A”
Sistemas Informáticos
CURSO: 2do “A”
FECHA: 24 de septiembre de 2023

Instituto Técnico Comercial La Paz


Carrera: Sistemas Informáticos
Asignatura: EDD- 203 (Estructura de Datos)
Gestión: 2023

PRÁCTICA FINAL (3RA. EVALUACIÓN)

1. Lea una palabra e imprima un mensaje indicando si es palíndromo o no. Use pilas. Una
palabra
es palíndromo cuando se lee igual hacia adelante que hacia atrás. Ejemplo: oso, radar,
reconocer,
rotor, seres, somos, etc.

#include <iostream>
#include <stack>
#include <string>
#include <cctype>

using namespace std;

bool esPalindromo(string palabra) {


stack<char> pila;

string palabraProcesada;
for (int i = 0; i < palabra.length(); i++) {
char c = palabra[i];
if (isalpha(c)) {
palabraProcesada += tolower(c);
}
}

for (int i = 0; i < palabraProcesada.length(); i++) {


char &c = palabraProcesada[i];
}

for (int i = 0; i < palabraProcesada.length(); i++) {


char c = palabraProcesada[i];
Damaris Sarai Rojas Patana
2do “A”
Sistemas Informáticos
pila.push(c);
}

string palabraInvertida = "";

while (!pila.empty()) {
palabraInvertida += pila.top();
pila.pop();
}

return palabraProcesada == palabraInvertida;


}

int main() {
string palabra;

cout << "Ingrese una palabra o frase: ";


getline(cin, palabra);

if (esPalindromo(palabra)) {
cout << "Es un palindromo." << endl;
} else {
cout << "No es un palindromo." << endl;
}

return 0;
}

2. Un conductor maneja de un pueblo origen a un pueblo destino, pasando por varios


pueblos.
Una vez en el pueblo destino, el conductor debe regresar a casa por el mismo camino.
Muestre el
camino recorrido tanto de ida como de vuelta.

#include <iostream>
#include <vector>
#include <string>

using namespace std;


Damaris Sarai Rojas Patana
2do “A”
Sistemas Informáticos
int main() {
vector<string> p;
int n;

cout << "Ingrese el numero de pueblos en el camino: ";


cin >> n;

cout << "Ingrese los nombres de los pueblos en el camino de ida:" << endl;
for (int i = 0; i < n; i++) {
string pueblo;
cin >> pueblo;
p.push_back(pueblo);
}

cout << "Camino de ida:" << endl;


for (int i = 0; i < p.size(); i++) {
cout << p[i] << " -> ";
}
cout << "Destino" << endl;

cout << "Camino de vuelta:" << endl;


for (int i = n - 1; i >= 0; i--) {
cout << p[i] << " -> ";
}
cout << "Origen" << endl;

return 0;
}

3. Lea una cadena y determine si los símbolos ( ) y [ ] están correctamente balanceados. Si


no lo
están muestre el error indicando el símbolo faltante. Use una pila para cada símbolo.

#include <iostream>
#include <stack>
#include <string>

using namespace std;

bool balanceados(const string& cadena) {


Damaris Sarai Rojas Patana
2do “A”
Sistemas Informáticos
stack<char> pP;
stack<char> pC;

for (int i = 0; i < cadena.length(); i++) {


char c = cadena[i];
if (c == '(') {
pP.push(c);
} else if (c == ')') {
if (pP.empty()) {
cout << "Error: Falta el parentesis de apertura '('." << endl;
return false;
}
pP.pop();
} else if (c == '[') {
pC.push(c);
} else if (c == ']') {
if (pC.empty()) {
cout << "Error: Falta el corchete de apertura '['." << endl;
return false;
}
pC.pop();
}
}

if (!pP.empty()) {
cout << "Error: Falta el parentesis de cierre ')'." << endl;
return false;
}

if (!pC.empty()) {
cout << "Error: Falta el corchete de cierre ']'." << endl;
return false;
}

return true;
}

int main() {
string cadena;
Damaris Sarai Rojas Patana
2do “A”
Sistemas Informáticos
cout << "Ingrese una cadena con parentesis y corchetes: ";
getline(cin, cadena);

if (balanceados(cadena)) {
cout << "Los simbolos están balanceados." << endl;
} else {
cout << "Los simbolos no están balanceados." << endl;
}

return 0;
}

4. Un almacén tiene capacidad para apilar n contenedores. Cada contenedor tiene un


número de
identificación. Cuando se desea retirar un contenedor específico, deben retirarse primero
los
contenedores que están encima de él y colocarlos en otra pila, efectuar el retiro y
regresarlos.
Utilice las subrutinas Push ( ) y Pop ( ) para gestionar los contenedores vistas en clases.

#include <iostream>
#include <stack>

using namespace std;

stack<int> a;
stack<int> t;

void P(int id, stack<int>& s) {


s.push(id);
}

bool Q(int id, stack<int>& o, stack<int>& d) {

while (!o.empty() && o.top() != id) {


t.push(o.top());
o.pop();
}

if (o.empty() || o.top() != id) {


Damaris Sarai Rojas Patana
2do “A”
Sistemas Informáticos
return false;
}

o.pop();

while (!t.empty()) {
o.push(t.top());
t.pop();
}

return true;
}

int main() {
P(11, a);
P(22, a);
P(33, a);
P(44, a);
P(55, a);
P(66, a);
int id = 33;
if (Q(id, a, t)) {
cout << "Se retiro el contenedor con ID " << id << endl;
} else {
cout << "No se pudo retirar el contenedor con ID " << id << endl;
}
P(77, a);
P(88, a);
cout << "Estado actual del almacen:" << endl;
while (!a.empty()) {
cout << "Contenedor ID: " << a.top() << endl;
a.pop();
}

return 0;
}

5. Se tiene una cola donde las mujeres son muy reclamonas, es por esto que se ordena
dividir la
cola en una de hombres y una de mujeres. Escriba un programa que haga esto.
Damaris Sarai Rojas Patana
2do “A”
Sistemas Informáticos

#include <iostream>
#include <queue>
#include <string>

using namespace std;

int main() {
queue<string> colaPer;
queue<string> colaH;
queue<string> colaM;

int numPersonas;

cout << "Ingrese el numero de personas en la cola: ";


cin >> numPersonas;

cin.ignore();

for (int i = 0; i < numPersonas; i++) {


string nombrePersona, generoPersona;

cout << "Ingrese el nombre de la persona " << i + 1 << ": ";
getline(cin, nombrePersona);

cout << "Ingrese el genero de la persona (Hombre o Mujer): ";


getline(cin, generoPersona);

for (int j = 0; j < generoPersona.length(); j++) {


generoPersona[j] = tolower(generoPersona[j]);
}

if (generoPersona == "hombre") {
colaH.push(nombrePersona);
} else if (generoPersona == "mujer") {
colaM.push(nombrePersona);
} else {
cout << "Genero no valido. Ingrese 'Hombre' o 'Mujer'." << endl;
i--;
}
Damaris Sarai Rojas Patana
2do “A”
Sistemas Informáticos
}

cout << "Cola de Hombres:" << endl;


while (!colaH.empty()) {
cout << colaH.front() << endl;
colaH.pop();
}

cout << "Cola de Mujeres:" << endl;


while (!colaM.empty()) {
cout << colaM.front() << endl;
colaM.pop();
}

return 0;
}

También podría gustarte