20-02-2018, 12:48
Buenas, ayer rendi este final y por suerte pude aprobarlo con 8, paso la imagen y subo mi resolucion.
Final Algos
Resolución:
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);