lunes, 15 de abril de 2013

Arreglo Desordenado Consola C#


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

namespace Arreglos__Consola_
{
    public class ClaseArregloDesordenado
    {
        private readonly int Max;   // Tamaño del arreglo
        private int Top;  // Variable para contar la cantidad de celdas ocupadas
        private int[] Arreglo;  // Declaración del arreglo

        public ClaseArregloDesordenado(int m)    // Constructor
        {
            Max = m;  // Se inicializa el tamaño del arreglo
            Top = 0;  // Se inicializa el arreglo vacío
            Arreglo = new int[Max]; // Creación del arreglo
        }

        private bool EstaLleno() // Método para detectar si el arreglo está lleno
        {
            if (Top == Max)
                return (true);
            else
                return (false);
        }

        public bool EstaVacio() // Método para detectar si el arreglo está vacío
        {
            if (Top == 0)
                return (true);
            else
                return (false);
        }

        public bool Insertar(int dato) // Método para insertar un dato en el arreglo desordenado
        {
            if (!EstaLleno()) // Si no está lleno ...
            {
                for (int i = 0; i <= Top-1; i++)
                    if (Arreglo[i] == dato)  // Comparación para detectar si el dato ya existe
                        return (false);  // No se insertó el dato (duplicado)
                Arreglo[Top] = dato;  // Se inserta el dato en el arreglo
                Top++;  // Se incrementa la cantidad de datos del arreglo
                return (true);  // Dato insertado con exito
            }
            else
                return (false); // No se insertó el dato (arreglo lleno)
        }

        public bool Eliminar(int dato) // Método para eliminar un dato del arreglo
        {
            int i = 0;

            if (!EstaVacio())  // Si no está vacío ...
            {
                for (i = 0; i <= Top-1; i++)
                {
                    if (Arreglo[i] == dato)
                    {
                        for (int y = i; y <= Top - 2; y++)  // Desplazamiento de los valores de las celdas sucesoras
                            Arreglo[y] = Arreglo[y + 1];
                        Top--;  // Se decrementa la cantidad de datos del arreglo
                        return (true);   // Dato eliminado con exito
                    }
                }
                return (false);  // No se encuentra el dato
            }
            else
                return (false);  // No se eliminó el dato (Arreglo vacío)
        }

        public string Mostrar()  // Método para desplegar los datos en pantalla
        {
            string Resultado = "\n\nTop="+Top+"\n";
           
            if (!EstaVacio())  // Si no está vacío ...
            {
                for (int i = 0; i <= Top-1; i++)
                    Resultado=Resultado+"\n["+i+"] -> "+Arreglo[i];
            }
            else
                Resultado=Resultado+"\nArreglo vacío !!!";
            return (Resultado);
        }

        public bool Ordenar()
        {
            int p = 0, i = 0, temporal=0;
            if (!EstaVacio())  // Si no está vacío ...
            {
                for (p = 0; p <= Top - 2; p++)  // Ciclo de la celda pivote
                    for (i = p + 1; i <= Top - 1; i++)  // Ciclo del resto de los datos del arreglo
                        if (Arreglo[i] < Arreglo[p])  //Comparación
                        {
                            temporal = Arreglo[p];
                            Arreglo[p] = Arreglo[i];  // Intercambio de valores
                            Arreglo[i] = temporal;
                        }
                return (true);
            }
            else
                return (false);
        }

        public int ObtenerMayor()  // Método que devuelve el valor más grande del arreglo
        {
                int Mayor = Arreglo[0]; // Inicializa la variable Mayor con el primer valor del arreglo
                for (int i = 1; i <= Top-1; i++)
                    if (Arreglo[i] > Mayor)  // Comparación
                        Mayor = Arreglo[i];
                return (Mayor);
        }
    }
}
/////////////////////////////OTRA CLASE

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

namespace Arreglos__Consola_
{
    class Program
    {
        static ClaseArregloDesordenado ArregloDesordenado = new ClaseArregloDesordenado(10);   // Declaracion del objeto

        static void Main(string[] args)
        {
            Int16 opcion = 0;
            do
            {
                Console.Clear();
                Console.WriteLine("ARREGLO UNIDIMENSIONAL DESORDENADO");
                Console.WriteLine("\n1.- Insertar dato");
                Console.WriteLine("2.- Eliminar dato");
                Console.WriteLine("3.- Ordenar datos del arreglo");
                Console.WriteLine("4.- Mostrar datos del arreglo");
                Console.WriteLine("5.- Mostrar el dato mayor");
                Console.WriteLine("0.- Salir");
                Console.Write("\n\nOpción ? ");
                opcion = Int16.Parse(Console.ReadLine());

                switch (opcion)
                {
                    case 1: InsertarEnArreglo(); break;
                    case 2: EliminarEnArreglo(); break;
                    case 3: OrdenarArreglo(); break;
                    case 4: MostrarArreglo(); break;
                    case 5: BuscarMayor(); break;
                }
            } while (opcion != 0);
        }

        public static void InsertarEnArreglo()
        {
            int Dato = 0;
            Console.Clear();
            Console.WriteLine("INSERTAR DATO EN EL ARREGLO");

            if (!ArregloDesordenado.EstaLleno())  // Si no está lleno ...
            {
                Console.Write("\nNúmero ? ");
                Dato = int.Parse(Console.ReadLine());  // Captura el dato entero que se desea insertar

                if (ArregloDesordenado.Insertar(Dato))
                    Console.WriteLine("\nDato insertado con éxito !!!");
                else
                    Console.WriteLine("\nNo se pudo insertar el dato ...");
            }
            else
                Console.WriteLine("\nArreglo Lleno ...");
            Console.ReadKey();
        }

        public static void EliminarEnArreglo()
        {
            int Dato = 0;
            Console.Clear();
            Console.WriteLine("ELIMINAR DATO DEL ARREGLO");

            if (!ArregloDesordenado.EstaVacio())  // Si no está vacío ...
            {
                Console.Write("\nNúmero ? ");
                Dato = int.Parse(Console.ReadLine());  // Captura el dato que se desea eliminar

                if (ArregloDesordenado.Eliminar(Dato))
                    Console.WriteLine("\nDato eliminado con éxito !!!");
                else
                    Console.WriteLine("\nNo se pudo eliminar el dato ...");
            }
            else
                Console.WriteLine("\nArreglo vacío ...");
            Console.ReadKey();
        }

        public static void OrdenarArreglo()
        {
            Console.Clear();
            if (ArregloDesordenado.Ordenar()) // Se invoca el método para ordenar el arreglo
            {
                Console.WriteLine("ARREGLO ORDENADO");
                Console.WriteLine(ArregloDesordenado.Mostrar()); // Muestra los datos ordenados del arreglo
            }
            else
                Console.WriteLine("\nArreglo vacío ...");
            Console.ReadKey();
        }

        public static void MostrarArreglo()
        {
            Console.Clear();
            Console.WriteLine("ARREGLO");

            Console.Write(ArregloDesordenado.Mostrar()); // Despliega los datos del arreglo
            Console.ReadKey();
        }

        public static void BuscarMayor()
        {
            Console.Clear();
            Console.WriteLine("BÚSQUEDA DEL DATO MAYOR DEL ARREGLO");

            if (!ArregloDesordenado.EstaVacio())
                Console.WriteLine("\nEl valor mayor es: "+ArregloDesordenado.ObtenerMayor());
            else
                Console.WriteLine("\nArreglo vacío !!!");
            Console.ReadKey();
        }
    }
}



2 comentarios:

Es muy importante tu comentarios: