lunes, 15 de abril de 2013

C# Pila Consola mediante la clase generica Stack




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Pila_Consola_Generica
{
    class Program
    {
        static Stack<int> Pila = new Stack<int>();

        static void Main(string[] args)
        {
            UInt16 opcion = 0;

            do
            {
                Console.Clear();
                Console.WriteLine("PILA USANDO COLECCIONES GENÉRICAS\n");
                Console.WriteLine("1.- Insertar dato (Push)");
                Console.WriteLine("2.- Eliminar dato (Pop)");
                Console.WriteLine("3.- Mostrar datos de la pila");
                Console.WriteLine("4.- Eliminar todos los datos de la pila (Vaciar)");
                Console.WriteLine("0.- Salir");
                Console.Write("\nOpción ? ");

                opcion = UInt16.Parse(Console.ReadLine());

                switch (opcion)
                {
                    case 1: InsertarEnPila(); break;
                    case 2: EliminarEnPila(); break;
                    case 3: MostrarDatos(); break;
                    case 4: VaciarPila(); break;
                }

            } while (opcion != 0);
        }

        public static void InsertarEnPila()
        {
            int Dato=0;

            Console.Clear();
            Console.WriteLine("INSERTAR DATO EN LA PILA GENÉRICA");
            Console.Write("\n\nNúmero entero ? ");
            Dato = int.Parse(Console.ReadLine()); // Captura el dato que se desea insertar

            // Invoca el método Push del objeto Pila de la clase genérica Stack
            Pila.Push(Dato); // Inserta el Dato en la Pila
        }

        public static void EliminarEnPila()
        {
            Console.Clear();
            Console.WriteLine("ELIMINAR EL ÚLTIMO DATO ALMACENADO EN LA PILA GENÉRICA");

            // Intenta ejecutar el método Pop
            try
            {
                // Invoca el método Pop del objeto Pila de la clase genérica Stack
                int Dato=Pila.Pop(); // Elimina el dato de la pila y lo recibe la variabla Dato
                Console.WriteLine("\n\nDato eliminado: " + Dato.ToString());
            }
            catch(InvalidOperationException e) // Si ocurre una excepción ...
            {
                // Despliega el mensaje de error
                Console.WriteLine("\n\nNo se realizó la eliminación... "+e.Message);
            }
            Console.ReadKey();
        }

        public static void MostrarDatos()
        {
            Console.Clear();
            Console.WriteLine("DATOS ALMACENADOS EN LA PILA GENÉRICA\n");

            // Intenta recorrer la Pila
            try
            {
                // Recorre cada Dato de la Pila
                foreach (int Dato in Pila)
                    Console.WriteLine(Dato);

                // Muestra la cantidad de elementos usando el método Count()
                Console.WriteLine("\nTop = " + Pila.Count());
            }
            catch (InvalidOperationException e)  // Si ocurre una excepción ...
            {
                // Despliega el mensaje correspondiente
                Console.WriteLine("\n\nPila vacía... " + e.Message);
            }
            Console.ReadKey();
        }

        public static void VaciarPila()
        {
            char sn;
            Console.Clear();
            Console.WriteLine("ELIMINAR TODOS LOS ELEMENTOS DE LA PILA (VACIAR)\n");

            // Solicita al usuario que confirme la operación
            do
            {
                Console.Write("¿Está seguro que desea vaciar la pila [S/N] ?");
                sn = char.Parse(Console.ReadLine());
                sn = Char.ToUpper(sn);  // Convierte a mayúsculas el caracter capturado
            } while (sn != 'S' && sn != 'N');

            if (sn == 'S')  // Si se confirma la operación ...
            {
                Pila.Clear();  // Invoca el método para limpiar la pila
                Console.WriteLine("\n\nSe eliminaron todos los elementos de la pila !!!");
                Console.ReadKey();
            }
        }

    }
}

No hay comentarios.:

Publicar un comentario

Es muy importante tu comentarios: