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
#include <iostream> #include <conio.h> #include <stack> // PILAS " LIFO " // Es como una Pila de Platos = // PRIMERO sale ( o muestro ) el LAST último hasta llegar al // FIRST primero using namespace std; stack <int> pila; int menor; // Declaro la Variable " menor" ya que // estoy buscando el Dato de tipo INT Menor de toda la Pila int main( ) { pila.push(35); pila.push(40); pila.push(20); pila.push(3); pila.push(10); // A DIFERENCIA DE LAS " COLAS " EN LAS " PILAS " para // mostrar el 1er Dato ( o sea, el 5to ) NO SE UTILIZA // ''' front ''' SINO SE UTILIZA ''' top ''' menor = pila.top(); // Esta Linea es NECESARIA puesto que cuando se evalue // " if ( pila.top() < menor ) ", si no definieramos previamente // que '' menor '' tome el valor del Dato que este AL COMIENZO DE LA PILA // " el IF " arrojaria '' 0 '' PUESTO QUE CUANDO AL PRINCIPIO DEFINIMOS // '' int menor '' COMO VARIABLE GLOBAL ( Ya que la definimos antes del // cuerpo de main ) ESTA SIEMPRE COMIENZA VALIENDO '' 0 '' // -- no hay ningun Nro menor que 0 dentro de la Pila -- while ( pila.size() > 0 ) // pila.size() determina la cantidad de Elementos que { // se encuentran en la Pila if ( pila.top() < menor ) { menor = pila.top(); } pila.pop(); // " BORRO " el Elemento actual para que el Bucle EVALUE otro // Elemento -- si no, seguiria siempre Evaluando a '' menor '' -- } cout << menor << endl; getch (); }