elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Código para mostrar el mayor Nro en una Pila : Duda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Código para mostrar el mayor Nro en una Pila : Duda  (Leído 5,803 veces)
snoopty

Desconectado Desconectado

Mensajes: 86


Ver Perfil
Código para mostrar el mayor Nro en una Pila : Duda
« en: 18 Noviembre 2021, 05:08 am »

Código
  1. /* En el Codigo a continuacion, en la linea " " if ( pila.top() > mayor ) " " no logro comprender
  2. del todo --- por mas que haya escrito un comentario justificando lo que hace el IF ---
  3. como puede ser que el elemento que esta al comienzo de la Pila ( 10 )
  4. sea MAYOR que la variable '' mayor ''', que alojara al Nro 40 . A continuacion, el Codigo = */
  5. #include <iostream>
  6. #include <conio.h>
  7. #include <stack>
  8. // PILAS " LIFO "
  9. // Es como una Pila de Platos =
  10. // PRIMERO sale ( o muestro ) el LAST ultimo hasta llegar al
  11. //                               FIRST primero
  12. using namespace std;
  13.  
  14. stack <int> pila; // Defino una Pila con Datos de Tipo Int
  15.  
  16. int mayor;      // Declaro la Variable " mayor " ya que
  17.                // estoy buscando el Dato de tipo INT Mayor de toda la Pila
  18.  
  19.  
  20. int main( )
  21. {
  22.  
  23. pila.push(35); // Agrego el 1er Dato
  24.               // Puedo LEERLO ... PERO NO ELIMINARLO
  25. pila.push(40); // Agrego el 2do Dato
  26.  
  27. pila.push(20); // Agrego el 3er Dato
  28.  
  29. pila.push(3); // Agrego el 4to Dato
  30.  
  31. pila.push(10); // Agrego el 5to Dato :
  32.               // Puedo LEERLO y ... ELIMINARLO ( P/ Leer/Editar los Anteriores Datos )
  33.  
  34. // A DIFERENCIA DE LAS " COLAS " EN LAS " PILAS " para
  35. // mostrar el 1er Dato ( o sea, el 5to ) NO SE UTILIZA
  36. // ''' front ''' SINO SE UTILIZA ''' top '''
  37.  
  38. while ( pila.size() > 0 ) // pila.size() determina la cantidad de Elementos que
  39. {                         // se encuentran en la Pila
  40.  
  41. if ( pila.top() > mayor ) // Pese a q esto parezca incoherente ( 10 no es mayor que 40 )
  42. {                         // ..... decimos " Si el Número actual que está al Comienzo de
  43.                          // la Pila ( QUE PARA ESTE RAZONAMIENTO YA NO ES EL " 10 " )
  44.                          // es MAYOR al contenido en '' mayor '' .....
  45.                          // ENTONCES Cambio el Valor que estaba '''' como MENOR ''''
  46.                          // Asignándole el LUGAR de '' Comienzo de la Pila ''
  47.  
  48. mayor = pila.top();       // Le " Confiero " a '' mayor '' que sea el que esté
  49.                          // al Comienzo de la Pila
  50.  
  51. }
  52. pila.pop();               // " BORRO " a éste para que el Bucle EVALÚE otro
  53.                          // Elemento -- si no, seguiría siempre Evaluando a '' mayor '' --
  54.  
  55. }
  56.  
  57.  
  58.  
  59. cout << mayor << endl;
  60.  
  61.  
  62. getch ();
  63. }
  64. // Gracias de antemano. Saludos !  


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Código para mostrar el mayor Nro en una Pila : Duda
« Respuesta #1 en: 18 Noviembre 2021, 07:50 am »

Iteracion 0:
top() devuelve 10 y mayor es 0, mayor pasa a ser 10
Iteracion 1:
top() devuelve 3 y mayor es 10, la condicion no se cumple
Iteracion 2:
top() devuelve 20 y mayor es 10, mayor pasa a ser 20
Iteracion 3:
top() devuelve 40 y mayor es 20, mayor pasa a ser 40
Iteracion 4:
top() devuelve 35 y mayor es 40, la condicion no se cumple


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
snoopty

Desconectado Desconectado

Mensajes: 86


Ver Perfil
Re: Código para mostrar el mayor Nro en una Pila : Duda
« Respuesta #2 en: 18 Noviembre 2021, 08:20 am »

Gracias x reponder.
Hay dos cosas que no entiendo :
1 ) Cuando decís =
Iteracion 0:
top() devuelve 10 y mayor es 0, mayor pasa a ser 10

Porque mayor es 0 ? ;
es acaso porque " sólo por haber estado al Comienzo de la
pila el 10 ", después de ser eliminado con el primer pop,
la pila, que queda temporalmente vacía, asume como valor de
Comienzo al 0 ?

2 ) SI por ejemplo en vez de " mayor " la variable fuera " a ",
Si análogamente itero =

Si top 10 > a
ENTONCES
a = 10

Si top 3 > 10
NO ES CIERTO :
a = 10

Si top 20 > 10
ENTONCES
a = 20

Si top 20 > 40
ENTONCES
¿ Porqué SI NO SE CUMPLE CON " 3 "
aquí se debería de cumplir ???? .... que
a = 40 ( ? )


Gracias por leer el mensaje. Saludos !




 


« Última modificación: 18 Noviembre 2021, 09:03 am por snoopty » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Código para mostrar el mayor Nro en una Pila : Duda
« Respuesta #3 en: 18 Noviembre 2021, 09:27 am »

1) mayor es una variable global y su valor inicial es 0 por defecto. ¿Que crees que deberia ser? Es eso o un valor indefinido ya que no inicializaste la variable ... por suerte no hace falta al ser una variable global.



2) No pero NO estas respetando los valores que tienen la pila segun a tu codigo.

Este es el orden de los valores que top va a devolver en cada iteracion:
10
3
20
40
35

En ningun momento top es 20 y mayor 40, no tiene logica alguna, cuando top es 20 mayor es 10, y despues cuando top es 40 mayor es 20 ... no es muy complicado de seguir esto realmente pone un cout con los valores si se te complica tanto.

Justo despues del while:
Código
  1. cout << "top es " << pila.top() << " mayor es " << mayor << endl;

top es 10 mayor es 0
top es 3 mayor es 10
top es 20 mayor es 10
top es 40 mayor es 20
top es 35 mayor es 40
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
snoopty

Desconectado Desconectado

Mensajes: 86


Ver Perfil
Re: Código para mostrar el mayor Nro en una Pila : Duda
« Respuesta #4 en: 19 Noviembre 2021, 09:48 am »

Thanks !!!!!!
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Código para mostrar el mayor Nro en una Pila : Duda
« Respuesta #5 en: 19 Noviembre 2021, 10:13 am »

De nada.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
mayor pila
Programación C/C++
karmi 1 4,861 Último mensaje 19 Octubre 2010, 15:19 pm
por DanyKadiz
Duda mostrar código html
Java
jorma16 0 2,052 Último mensaje 7 Septiembre 2012, 15:26 pm
por jorma16
Código para mostrar el MENOR Nro en una Pila : Duda
Programación C/C++
snoopty 4 4,335 Último mensaje 25 Noviembre 2021, 08:33 am
por Eternal Idol
Mostrar el mayor valor de una pila
Programación C/C++
Mar90_13 2 4,771 Último mensaje 12 Agosto 2022, 17:02 pm
por dijsktra
ayuda el codigo deberia mostrar el mayor de 3 numeros pero solo crashe CMD es en batch
Dudas Generales
TekoKZ 2 2,900 Último mensaje 16 Noviembre 2022, 15:27 pm
por Elektro Enjuto
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines