#14 C# Ordenamiento QuickSort

Programa que usa el algoritmo QuickSort para ordenar valores random

    class Program
    {
        int h;
        int[] vector;
        private void mostrar()
        {
            Console.WriteLine("\nVector ordenados en forma ascendente");
            for (int i = 0; i < h; i++)
            {
                Console.Write("\nValor= "+ vector[i]);
            }
            Console.ReadLine();
        }
        public void llenar(int n)
        {
            h = n;
            vector = new int[h];
            Random r = new Random();
            for (int i = 0; i < h; i++)
            {
                vector[i] = r.Next(0,3000);
                Console.Write("\nValor random= "+vector[i]);
            }
            quicksort(vector, 0, h - 1);
            mostrar();
        }
        static void Main(string[] args)
        {
            int n;
            Console.WriteLine("Quick Sort");
            Console.Write("Cuantos longitud del vector: ");
            n = Int32.Parse(Console.ReadLine());
            Program h = new Program();
            h.llenar(n);
            h.mostrar();
            Console.ReadKey();
            
        }
        public void quicksort(int[] vec,int izq, int der)
        {
            int i, j, pivote, aux;
            i = izq;
            j = der;
            pivote = vec[(izq + der) / 2];
            do
            {
                while (vec[i] < pivote && i < der)
                {
                    i++;
                }
                while (vec[j] > pivote && j > izq)
                {
                    j--;
                }
                if (i <= j)
                {
                    aux = vec[i];
                    vec[i] = vec[j];
                    vec[j] = aux;
                    i++;
                    j--;
                }
            } while (i <= j);
            if (izq < j)
                quicksort(vec,izq, j);
            if (i < der)
                quicksort(vec,i, der);
        }
        
    }

#13 C# Cadena codificada

Botón que codifica

        private void button1_Click(object sender, EventArgs e)
        {
            StringBuilder cad = new StringBuilder(textBox1.Text);
            int val = 1;
            for (int i = 0; i < cad.Length; i++)
            {
                if (cad[i] >= 10 && cad[i] <= 122)
                {
                    if (cad[i] == 122)
                        cad[i] = (char)(cad[i] - 10);
                    cad[i] = (char)(cad[i] + val);
                }
            }
            textBox2.Text = Convert.ToString(cad);
            

        }

Boton que descodifica 
        private void button2_Click(object sender, EventArgs e)
        {
            StringBuilder cad = new StringBuilder(textBox2.Text);
            int val = 1;
            for (int i = 0; i < cad.Length; i++)
            {
                if (cad[i] >= 10 && cad[i] <= 122)
                {
                    if (cad[i] == 10)
                        cad[i] = (char)(cad[i] + 10);
                    cad[i] = (char)(cad[i] - val);
                }
            }
            textBox3.Text = Convert.ToString(cad);
        }
Clase cadena

    class Cadena
    {
        char[] cad;
        public Cadena(int n)
        {
            cad = new char[n];
        }
        public Cadena(Char[] aux)
        {
            cad = new char[aux.Length];
            for (int i = 0; i < aux.Length; i++)
                cad[i] = aux[i];
        }
        public Cadena(Cadena c)
        {
            cad = new char[c.tam];
            for (int i = 0; i < c.tam; i++)
                cad[i] = c[i];
        }
        public char this[int i]
        {
            get
            {
                return cad[i];
            }
            set
            {
                cad[i] = value;
            }
        }

        public Cadena subcadena(int pos, int num)
        {
            Cadena sub = new Cadena(num);
            for (int i = pos, j = 0; j < num; i++, j++)
                sub[j] = cad[i];
            return sub;
        }

        public int tam
        {
            get
            {
                return cad.Length;
            }
        }
        public Cadena(string str)
        {
            cad = new char[str.Length];
            //for (int i = 0; i < str.Length; i++)
            //    cad[i] = str[i];
            cad = str.ToCharArray();
        }

        public Cadena(StringBuilder str)
        {
            cad = new char[str.Length];
            for (int i = 0; i < str.Length; i++)
                cad[i] = str[i];
        }

        public void copiar(Cadena c)
        {
            c = new Cadena(cad);
        }


        public void copiar(Cadena c1, Cadena c2)
        {
            c1 = new Cadena(c2);
        }

        public char[] encriptar()
        {
            Cadena enc = new Cadena(cad);
            //for (int i = 0; i < cad.Length; i++)
            //    cad[i] -= '6';
            //return cad;
            int val = 1;
            for (int i = 0; i < cad.Length; i++)
            {
                if (cad[i] >= 10 && cad[i] <= 122)
                {

                    if (cad[i] == 122)
                        cad[i] = (char)(cad[i] - 6);
                    cad[i] = (char)(cad[i] + val);
                }
            }
            return cad;
        }

        public char[] desencriptar()
        {
            Cadena enc = new Cadena(cad);
            //for (int i = 0; i < cad.Length; i++)
            //    cad[i] += '6';
            //return cad;
            int val = 1;
            for (int i = 0; i < cad.Length; i++)
            {
                if (cad[i] >= 10 && cad[i] <= 122)
                {

                    if (cad[i] == 10)
                        cad[i] = (char)(cad[i] + 6);
                    cad[i] = (char)(cad[i] - val);
                }
            }
            return cad;
        }

        public void invertir()
        {
            for (int i = 0; i < cad.Length; i++)
                if (cad[i] >= 'a' && cad[i] <= 'z')
                    cad[i] -= ' ';
                else if (cad[i] >= 'A' && cad[i] <= 'Z')
                    cad[i] += ' ';
        }
        public char[] a_minus()
        {
            for (int i = 0; i < cad.Length; i++)
                if (cad[i] >= 'A' && cad[i] <= 'Z')
                    cad[i] += ' ';
            return cad;


        }

        public char[] a_mayus()
        {
            for (int i = 0; i < cad.Length; i++)
                if (cad[i] >= 'a' && cad[i] <= 'z')
                    cad[i] -= ' ';
            return cad;
        }

        public bool es_mayus(int i)
        {
            if (Char.ToUpper(cad[i]) == cad[i])
            {
                return true;
            }
            else
                return false;
        }

        public bool es_minus(int i)
        {
            if (Char.ToLower(cad[i]) == cad[i])
            {
                return true;
            }
            else
                return false;
        }

        public static bool es_digito(char car)
        {
            if (Char.IsDigit(car))
                return true;
            else
                return false;
        }

        public bool esta_en(char c)
        {
            int j = 0;
            for (int i = 0; i < cad.Length; i++)
                if (c == cad[i])
                    j++;
            if (j < 0)
                return true;
            else
                return false;
        }

        public int veces_que_esta(char c)
        {
            int j = 0;
            for (int i = 0; i < cad.Length; i++)
                if (c == cad[i])
                    j++;
            return j;
        }

        public override string ToString()
        {
            string cade = "";
            for (int i = 0; i < cad.Length; i++)
                cade += cad[i];
            return cade;
        }
    }

#12 C# Cola simple plantilla


namespace cola_simple_plantilla
{
    class Cola
    {
        T[] vec;
        int p;
        int u;
        int tam;

        public Cola(int n)
        {
            p = u = -1;
            tam = n;
            vec = new T[tam];
        }
        public bool esta_llena()
        {
            if (u >= tam - 1)
                return true;
            return false;
        }
        public bool esta_vacia()
        {
            if (p == -1)
                return true;
            return false;
        }
        public bool Agregar(T dato)
        {
            if (!esta_llena())
            {
                vec[++u] = dato;
                if (u == 0)
                    p = 0;
                return true;
            }
            return false;
        }
        public bool extraer(ref T dato, T n)
        {
            if (!esta_vacia())
            {
                dato = vec[p];
                vec[p] = n;
                if (p == u)
                {
                    p = -1;
                    u = p;
                }
                else
                    p++;
                return true;
            }
            return false;
        }
        public void mostrar(DataGridView dgv)
        {
            dgv.ColumnCount = tam;
            for (int i = 0; i < tam; i++)
            {
                dgv[i, 0].Value = vec[i];
            }
        }
    }
}

namespace cola_simple_plantilla
{
    public partial class Form1 : Form
    {
        Cola cola;
        int i;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int n = Convert.ToInt32(textBox1.Text);
            cola = new Cola(n);
            
        }

        private void button2_Click(object sender, EventArgs e)
        {
            int num = Convert.ToInt32(textBox2.Text);
            if(cola.Agregar(num))
            {
                cola.mostrar(dataGridView1);
            }
            else
            {
                MessageBox.Show("Cola llena");
                i++;
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            int dato = 0;
            if(cola.extraer(ref dato,0))
            {
                label1.Text = dato.ToString();
                cola.mostrar(dataGridView1);
            }
            else
            {
                MessageBox.Show("Cola vacia");
            }
        }
    }
}

#11 C# Pila Enlazada Visual


    class N
    {
        public int v;
        public N s;
        public N(int vv, N ss)
        {
            v = vv;
            s = ss;
        }
    }
    class PE
    {
        N u;
        public PE()
        {
            u = null;
        }
        public void metodo1(int vv)
        {
            N nu = new N(vv, u);
            u = nu;
        }
        public int metodo2()
        {
            N naux;
            int val;
            if (u == null)
                return -1;
            naux = u;
            u = naux.s;
            val = naux.v;
            return val;
        }
    }

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            dataGridView1.RowCount = 4;
            dataGridView1.Rows.Add();
        }
        PE exam = new PE();
        int tam = 4;
        private void button2_Click(object sender, EventArgs e)
        {
            if(tam>=0&&tam<4)
            {
                textBox2.Text = exam.metodo2().ToString();
                dataGridView1[0, tam].Value = "";
                dataGridView1[0, ++tam].Value = "";
            }
            else
            {
                dataGridView1[0, tam].Value = "no hay datos";
                return;
            }
            if (tam >= 0)
                dataGridView1[0, tam].Value = "Tope";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int dato;
            dato = Convert.ToInt32(textBox1.Text);
            textBox1.Text = "";
            if(tam!=0)
            {
                exam.metodo1(dato);
                dataGridView1[0, tam].Value = "";
                dataGridView1[0, tam--].Value = dato;
            }
            else
            {
                dataGridView1[0, tam].Value = "Lista llena";
                return;
            }
            if (tam <= 0)
                dataGridView1[0, tam].Value = "Tope";
            textBox1.Select();
        }
   }

#10 C# Pila Enlazada


    class N
    {
        public int v;
        public N s;
        public N(int vv,N ss)
        {
            v = vv;
            s = ss;
        }
    }
    class PE
    {
        N u;
        public PE()
        {
            u = null;
        }
        public void metodo1(int vv)
        {
            N nu = new N(vv, u);
            u = nu;
        }
        public int metodo2()
        {
            N naux;
            int val;
            if (u == null)
                return -1;
            naux = u;
            u = naux.s;
            val = naux.v;
            return val;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            PE objeto = new PE();
            objeto.metodo1(20);
            Console.WriteLine("Valor enviado: " + 20);
            objeto.metodo1(10);
            Console.WriteLine("Valor enviado: " + 10);
            objeto.metodo1(40);
            Console.WriteLine("Valor enviado: " + 40);
            Console.WriteLine("\n\n");
            Console.WriteLine("Valor retornado : " + objeto.metodo2());
            Console.WriteLine("Valor retornado : " + objeto.metodo2());
            Console.WriteLine("Valor retornado : " + objeto.metodo2());
            if (objeto.metodo2() == -1)
                Console.WriteLine("Valor retornado : " + "no hay datos");
            Console.ReadKey();
        }
    }

#9 C# Colas


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

namespace Colas
{
    class Program
    {
        static void Main(string[] args)
        {
            
            int i, n, dato = 0;
            Console.Write("¿CUANTOS ELEMENTOS? ");
            n = Convert.ToInt32(Console.ReadLine());
            Cola cola = new Cola(n);
            Random r = new Random();
            Console.WriteLine("\nINCERTANDO EN LA COLA");
            for (i = 0; i < n; i++)
            {
                dato = r.Next(100);
                if (cola.agregar(dato))
                    Console.WriteLine("Dato agregado: " + dato);
                else
                {
                    Console.WriteLine("Desbordamiento, cola llena");
                }
            }
            Console.WriteLine("\nEXTRAYENDO DATOS DE LA COLA");
            while (cola.extraer(ref dato))
            {
                Console.WriteLine("Dato extraido: " + dato);
            }
            Console.ReadKey();
        }
    }

    class Cola
    {
        //ATRIBUTOS
        int[] vec;
        int p, u, tam;

        //CONSTRUCTOR
        public Cola(int n)
        {
            p = u = -1;
            tam = n;
            vec = new int[tam];
        }

        public bool esta_llena()
        {
            if (u >= tam - 1)
                return true;
            return false;
        }

        public bool esta_vacia()
        {
            if (p == -1)
                return true;
            return false;
        }

        public bool agregar(int dato)
        {
            if (!esta_llena())
            {
                vec[++u] = dato;
                if (u == 0)
                    p = 0;
                return true;
            }
            return false;
        }

        public bool extraer(ref int dato)
        {
            if (!esta_vacia())
            {
                dato = vec[p];
                if (u == p)
                {
                    p = u = -1;
                }
                else
                {
                    p++;
                }
                return true;
            }
            return false;
        }
    }
}