Título: Código para mostrar el MENOR Nro en una Pila : Duda Publicado por: snoopty en 24 Noviembre 2021, 08:03 am /*
Cuando analizo la 1er ITERACIÓN ,LA ITERACiÓN 0, ME DÁ QUE Top es 10 ( para mí es así a partir de lo explicado al lado de la línea arriba del " while " ) ¿ Cómo puede ser esto ? el if compara " if 10 < 10 " .... ESTO ES UNA INCOHERENCIA ( ? ) LAS SIGUIENTES ITERACIONES SON ENTENDIBLES YA QUE EN LA SGTE 3 ES MENOR QUE 10 , y se mantiene ese criterio hasta el final; pero no comprendo lo de " if 10 < 10 " */ Código
Título: Re: Código para mostrar el MENOR Nro en una Pila : Duda Publicado por: Eternal Idol en 24 Noviembre 2021, 10:27 am Esta claro que tenes problemas con la logica, si te resulta imposible imaginar lo que va haciendo el programa entonces tenes que depurarlo linea por linea, que es lo ideal, o cuanto menos ayudarte generando una salida en pantalla.
Código
El valor de retorno de top es 10, no por ese comentario, es 10 por el simple hecho de que en la linea 21 el ultimo llamado a push tuvo como parametro 10. ¿Como puede ser que? ¿Que menor sea 10? Se le asigna ese valor en la linea 27. No hay ninguna incoherencia y una vez asignado el resultado de pila.top a menor, linea 27, deberias llamar a pila.pop, esa primera comparacion que haces es futil. Título: Re: Código para mostrar el MENOR Nro en una Pila : Duda Publicado por: MAFUS en 24 Noviembre 2021, 10:30 am Comparas y haces la pregunta:
¿Diez es menor que diez? El programa te responde: No, por lo que no hago el cuerpo del if y ejecuto directamente pila.pop(); La siguiente iteración comparas y preguntas: ¿Tres es menor que diez? El programa te responde: Sí, ejecuto el cuerpo del if y escribo en 'menor' el valor actual del top de la pila; después borro ese número del top. Título: Re: Código para mostrar el MENOR Nro en una Pila : Duda Publicado por: snoopty en 24 Noviembre 2021, 18:08 pm Gracias ! .... sucede que pensaba que el algoritmo, por ser exigente " y por defecto " evaluaria el hecho de que
" 10 sea menor que 10 " como un error, por una cuestión de comparar el mismo número sin que haya una igualdad mediante. Comparas y haces la pregunta: ¿Diez es menor que diez? El programa te responde: No, por lo que no hago el cuerpo del if y ejecuto directamente pila.pop(); La siguiente iteración comparas y preguntas: ¿Tres es menor que diez? El programa te responde: Sí, ejecuto el cuerpo del if y escribo en 'menor' el valor actual del top de la pila; después borro ese número del top. Gracias, MAFUS : El siguiente Esquema Iterativo, qué te parece ? = ITERACiÓN 0 Top es 10 ( 10 < " 10 menor " ) ( LA CONDICIÓN NO SE CUMPLE ) => menor = 10 && Se borró el 10( menor ) ITERACiÓN 1 Top es 3 ( 3 < " 10 menor " ) => menor = 3 && Se borró el 10( pila.top ) ITERACiÓN 2 Top es 20 ( 20 < " 3 menor " ) ( LA CONDICIÓN NO SE CUMPLE ) => menor = 3 && Se borró el 20 ITERACIÓN Top es 40 ( 40 < " 3 menor " ) ( LA CONDICIÓN NO SE CUMPLE ) => menor = 3 && Se borró el 40 ITERACiÓN 4 Top es 35 ( 35 < " 3 menor " ) ( LA CONDICIÓN NO SE CUMPLE ) => menor = 3 && Se borró el 35 Título: Re: Código para mostrar el MENOR Nro en una Pila : Duda Publicado por: Eternal Idol en 25 Noviembre 2021, 08:33 am Gracias, MAFUS : El siguiente Esquema Iterativo, qué te parece ? = ITERACiÓN 0 Top es 10 ( 10 < " 10 menor " ) ( LA CONDICIÓN NO SE CUMPLE ) => menor = 10 && Se borró el 10( menor ) ITERACiÓN 1 Top es 3 ( 3 < " 10 menor " ) => menor = 3 && Se borró el 10( pila.top ) ITERACiÓN 2 Top es 20 ( 20 < " 3 menor " ) ( LA CONDICIÓN NO SE CUMPLE ) => menor = 3 && Se borró el 20 ITERACIÓN Top es 40 ( 40 < " 3 menor " ) ( LA CONDICIÓN NO SE CUMPLE ) => menor = 3 && Se borró el 40 ITERACiÓN 4 Top es 35 ( 35 < " 3 menor " ) ( LA CONDICIÓN NO SE CUMPLE ) => menor = 3 && Se borró el 35 Esta mal en la segunda linea, lo que se borra de la pila es 3, no 10. Y en la primera linea no se borra menor, se borra siempre de la pila, coincide su valor con menor por obvias razones, por eso te dije antes que seria mas logico llamar a pop antes de empezar el bucle en lugar de comparar futilmente menor (que sabemos que es igual al resultado de top) con el resultado de top. |