sábado, 30 de marzo de 2013

Próximamente les traeré una aplicación donde calcularemos el seno, coseno, tangente y raíz cuadrada de un número en Consola c# y Visual #.

Conversión de decimal a binario y de binario a decimal (Visual c#)

Les vuelvo a mostrar como hacer la conversión de un número entero a decimal y de binario a decimal, pero en Visual c#.

En la Form1.cs [Diseño], utilizaremos un componente label y le pondremos en la propiedad Text: "Introduzca el valor a convertir", después le pondremos un componente textBox a un lado del label; luego dos componentes buttons, uno para la conversión de decimal a binario y el otro para la conversión de binario a decimal; y por último, otro componente label para visualizar el valor ya convertido.
Después de haber terminado con el diseño de la aplicación, vamos a proseguir con la introducción del código.

Primero haremos de forma directa la conversión de decimal a binario, hacemos doble click en el primer botón e ingresamos el siguiente código:


private void button1_Click(object sender, EventArgs e)
{
    long num = Convert.ToInt32(textBox1.Text);
    if (num > 0)
    {
        String bin = "";
        while (num > 0)
        {
            if (num % 2 == 0)
            {
                label2.Text = bin = "0" + bin;
            }
            else
            {
                label2.Text = bin = "1" + bin;
            }
            num = (long)(num / 2);
        }
        label2.Text = bin;
     }
     else
     {
         if (num < 0)
             MessageBox.Show("Solo numeros positivos");
     }
}

Ahora ingresaremos un método para la conversión de binario a decimal:


public String binToDec(String cadNumero)
{
    int i, iLength;
    long iResult = 0;
    iLength = cadNumero.Length;
    long[] cadena = new long[cadNumero.Length];
    long numero = long.Parse(cadNumero);
    iLength--;
    long cifra = 0;
    for (int j = cadNumero.Length - 1; j >= 0; j--)
    {
         cifra = numero % 10;
         numero = numero / 10;
         cadena[j] = cifra; 
    }

    for (i = 0; i < cadNumero.Length; i++, iLength--)
    {
         iResult += cadena[i] * (long)Math.Pow(2, iLength);
    }
    return iResult.ToString();
}

Ya terminado el método, le damos doble click al segundo botón y escribimos:


private void button2_Click(object sender, EventArgs e)
{
    label2.Text = binToDec(textBox1.Text);
}

Y eso es todo, les debe funcionar bien...


Conversión de decimal a binario y de binario a decimal (Consola c#)

Aquí les muestro como convertir un número entero o decimal a binario y de binario a decimal en Consola c#.

Primero comenzamos con el método de conversión:


public static int atoi(string strNum)
{
    return int.Parse(strNum);
}
        
private static int Search(char c)
{
    string Num = "01";
    int i = 0;
    for (i = 0; i < 2; i++)
    {
         if (Num[i] == c)
             break;
    }
    return i;
}
        
public static int Bin2Dec(string Cad)
{
    int i, iLenght;
    int iResult = 0;
    iLenght = Cad.Length;
    iLenght--;
    for (i = 0; i < Cad.Length; i++, iLenght--)
    {
         iResult += (Search(Cad[i]) * (int)Math.Pow(2, iLenght));
    }
    return iResult;
}

public static string Dec2Bin(int iNum)
{
    string strNum = "";
    int i;
    int iMask = 1 << 7;
    for (i = 1; i <= 8; i++)
    {
         if ((iNum & iMask) != 0)
             strNum += "1";
         else
             strNum += "0";
         iNum <<= 1;
     }
     return strNum;
}

Después continuaremos con el método del Menú de selección:


public static int Menu()
{
     int iOpc;
     string strOpc;
     Console.Write("\n\n1.- Decimal a Binario.");
     Console.Write("\n2.- Binario a Decimal.");
     Console.Write("\n3.- Salir");
     Console.Write("\nEscoje tu opcion: ");
     strOpc = Console.ReadLine();
     iOpc = atoi(strOpc);
     return iOpc;
}

Ya de haber terminado con los métodos, comenzaremos a crear el programa en el "main":


static void Main(string[] args)
{
     string Num;
     int iOpc;
     Console.WriteLine("\nPrograma que convierte de Decimal a  Binario y Binario a Decimal");
     iOpc = Menu();
     while (iOpc != 3)
     {
         switch (iOpc)
         {
             case 1:
                 Console.Out.Write("\nEscribe un numero : ");
                 Num = Console.ReadLine();
                 Console.Write("El numero en binario es: " + Dec2Bin(atoi(Num)));
                 Console.WriteLine();
                 break;
             case 2:
                 Console.Out.Write("\nEscribe un numero en binario: ");
                 Num = Console.ReadLine();
                 Console.Write("El numero en decimal es: " + Bin2Dec(Num));
                 Console.WriteLine();
                 break;
             case 3: break;
             default: Console.Write("\nOpcion incorrecta.");
             break;
         }
         iOpc = Menu();
     }
     Console.Write("\nPresione <Enter> para salir...");
     Console.Read();
}

Y ya debe  funcionar correctamente el programa para convertir un número entero o decimal a binario y de binario a decimal....