Phiiliip077
Secretario de la SAE
1 a la vez
Ing. en Sistemas
Facultad Regional Buenos Aires
Mensajes: 550
Agradecimientos dados: 55
Agradecimientos: 373 en 221 posts
Registro en: Oct 2016
|
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:
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 |
|
Phiiliip077 recibio 8 Gracias por este postPhiiliip077 recibio 8 Gracias por este post
JuanManuel25 (24-02-2018), gerjor (25-02-2018), spiagus (26-02-2018), Ara07 (29-07-2018), Franco123 (01-10-2018), Alejo98 (02-12-2018), Luchhoo7 (15-01-2019), PabloSorrentino (17-12-2019)
|