Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Aporte] Final 19/02 Algoritmos
Autor Mensaje
Phiiliip077 Sin conexión
Campeon del cubo Rubik
1 a la vez
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 109
Agradecimientos dados: 13
Agradecimientos: 44 en 36 posts
Registro en: Oct 2016
Facebook Twitter
Mensaje: #1
[Aporte] Final 19/02 Algoritmos Finales Algoritmos y Estructuras de Datos
Buenas, ayer rendi este final y por suerte pude aprobarlo con 8, paso la imagen y subo mi resolucion.

Final Algos

Resolución:

Spoiler: Mostrar


1) #Define N = 20; (Este numero era opcional, podias poner el que quieras)

char Vector[N];

struct NodoCola {
char Letra;
NodoCola* sgte;
}

NodoCola* frente = null;
NodoCola* fin = null;

Precondiciones: - No se pueden ingresar mas de N valores por cada ejecucion del programa.
- El " " simboliza el espacio
- En la funcion esPalindromo, como se llenan al mismo tiempo con la misma cantidad de elementos el vector y la cola, con que se vacie uno de los dos alcanza para saber que ambos se vaciaron.



2) char pop(char &Vector[N]){
char aux = 'a'; // Siempre que se inicie la funcion pop es porque hay elementos en la pila, asi que siempre devuelve un char de la pila
for(int i =0;i<N;i++){
if(Vector[i] != NULL){
aux = Vector[i];
Vector[i] = NULL;
return aux;
}
}
return aux;
}

void push(char &Vector[N], char x){
if(x != " "){ // Esto simboliza el espacio entre palabras, el cual lo saco pq cuando comparemos palabras no lo necesitamos
for(int i =0; i<N ; i++){
if(Vector[i] != NULL){
Vector[i-1] = x;
return;
}
Vector[N-1] = x; // Si no hay nada en la pila lo pongo en la última posición
}
}


3) Encolar y Desencolar son las definicioens textuales del machete oficial de Oscar Bruno, asi que no hace falta copiarlas. (Los parametros de esta funcion se pasan por referencia)

4) void AgregarCaracteres(char &Vector[N] , NodoCola* &frente, NodoCola* &fin){
// Yo puse que se corte el flujo de entrada cuando se ingresa un '.' , Esto era a eleccion de cada uno en el final

char c = getC();
while(c != '.'){
encolar(frente,fin,c);
push(Vector,c);
c = getC();
}
}

5) bool esPalindromo(char &Vector[N], NodoCola* &frente, NodoCola* &fin){
AgregarCaracteres(Vector, frente,fin);

while(frente != NULL){
if(desencolar(frente,fin) != pop(Vector)){
return false; // Cuando solo uno de los elementos sea distinto, ya es falso.
}
}
return true; // Si nunca salio por el If, entonces todas las letras son iguales y es palindroma la palabra u oracion.
}

6) Invocaciones:

AgregarCaracteres(VectorDePalabras,unFrente, unFin);

return esPalindromo(VectorDePalabras, unFrente, unFin);

(Este mensaje fue modificado por última vez en: 20-02-2018 13:59 por Phiiliip077.)
20-02-2018 12:48
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Phiiliip077 recibio 5 Gracias por este post
JuanManuel25 (24-02-2018), gerjor (25-02-2018), spiagus (26-02-2018), Ara07 (29-07-2018), Franco123 (01-10-2018)
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.