Bienvenidos a un nuevo curso. Ahora estoy en el ciclo de grado superior: Desarrollo de aplicaciones multiplataforma. Y voy a ser parte del experimento de la formación dual. Estaré haciendo practicas durante un año, y a la vez finalizando la formación.

Deseadme suerte.

viernes, 3 de junio de 2016

Repaso 1 Evaluación (I)

0

Pasa de binario a decimal con una función recursiva.

Mi método:

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            //Este es el numero binario que se recoge por pantalla
            int numbinario;
            //Esta es la variable donde se guarda el resultado
            int numdecimal=0;
            //Esta variabe nps marcara la posicion
            int contador = 0;
            //recogemos la variable por pantalla
            Console.WriteLine("Escriba un numero binario");
            numbinario = int.Parse(Console.ReadLine());
            //llamamos a la funcion que convierte de binario a decimal
            ConvertirDecimal(numbinario, ref contador, ref numdecimal);
            //mostramos por pantalla
            Console.WriteLine(numdecimal);
            Console.ReadKey();
        }
        //Esta funcion convierte de binario a decimal
        public static void ConvertirDecimal(int numbinario, ref int  contador, ref int numdecimal)
        {
            //Esta variable se utiliza para distinguir entre 1 y 0
            int primer= numbinario;
            //Si el resto de devidir el nubinario para 10 es 1 se realiza la accion.
            primer %= 10;
            if (primer == 1)
            {
                //Para pasar a decimal la base a de ser dos
                int exponente = 2;
                //El resultado de 2 exponente a 0 es 1
                if (contador == 0)
                {
                    exponente = 1;
                }
                //El resultado de 2 exponente a 1 es 2
                else if (contador == 1)
                {
                    exponente = 2;
                }
                else
                {
                    //100 es 4. Con contador =  3, si no restara el programa me diria que 100 es 16
                    int aux = contador - 2;
                    while (aux >= 0)
                    {
                        exponente = exponente * 2;
                        aux--;
                    }
                }
                //101=4+0+1
                numdecimal = numdecimal + exponente;
            }
            //sumamos una posicion
            contador++;
            //mientras numbinario sea mayor de 0, se repetira la funcion
            if (numbinario > 0)
            {
                ConvertirDecimal(numbinario / 10, ref contador, ref numdecimal);
            }
        }
    }

}

Método del profesor:

namespace ConsoleApplication2
{
    class Program
    {
        static double Adecimal(string n)
        {
            //.Length te dice el tamaño de la variable. El tamaño de 10100 = 5
            //n[0] devuelve el ultimo numero. n[0] de 10100 es 0.
            //Si tamaño es mayor que 0 y el ultimo numero es 1 realiza la accion
            if ((n.Length > 0) && ((n[0]) == '1'))
                //Math.Pow realiza una potencia 
                // calcula la potencia de 2 elevado al tamaño -1. 
                //y suma el resultado de la repeticion de la funcion.
                //n.Remove(0,1) borra empezando por el primer lugar, 1 posicion
                return Math.Pow(2, n.Length - 1) + Adecimal(n.Remove(0, 1));
            //Si el tamaño es distinto de 0, vueleve a llamar a la funcion 
            // recuerda que n.Remove(0,1) borra empezando por el ultimo lugar, 1 posicion
            else if (n.Length != 0)
                return Adecimal(n.Remove(0, 1));
            // si no se cumple ninguna condicion devuelve 0.
            else
                return 0;
        }

        public static void Main(string[] args)
        {
            Console.Write("Introduce un valor en binario: ");
            // recoge por pantalla el numero binario en forma de texto.
            string n = Console.ReadLine();
            //devuelve por pantalla el resultado de la funcion Adecimal
            Console.Write("El valor de {0} en decimal es: {1}", n, Adecimal(n));
            Console.ReadKey();
        }
    }
}

Comprobaciones realizadas 
10100=20
1000=8
101=5
100=4

0 comentarios:

Publicar un comentario

Etiquetas actuales

BD (67) DEF (64) PROG (64) SQL (44) Java (29) PRACTICAS (20) php (18) DI (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) HTML (13) SGE (12) ERP (9) CONSULTAS (8) css (8) Linux (5) XML (5) Android (4) PDM (4) C (3) NetBeans (3) PSP (3) SMARTY (3) comandos (3) HOOK (2) POST (2) XSD (2) cURL (2) JS (1) MEDIA-QUERYS (1) PDO (1) RESPONSIVE (1) TPL (1) TRADUCCIÓN (1) app_inventor (1)

Todas las etiquetas

EJER (78) BD (67) DEF (64) PROG (64) SQL (44) c# (40) Programación (39) Ficheros (36) Java (29) bases de datos (21) PRACTICAS (20) lenguajes de marcas (19) AD (18) Entorno de desarrollo (18) php (18) PROCEDIMIENTOS (17) DI (16) FORM (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) lenguaje C (16) E/R (14) HTML (13) SGE (12) Sistemas informáticos (10) ERP (9) CONSULTAS (8) TRANSACCIONES (8) TRIGGER (8) VISUAL BASIC (8) css (8) FUNCIONES (7) html5 (6) Ada (5) EXAMEN (5) Linux (5) XML (5) estructuras (5) Android (4) DISEÑO (4) INTERFAZ (4) LOG (4) OpenBravo (4) PDM (4) ACTUALIZAR (3) C (3) DIAGRAMA (3) Directorios (3) NEW (3) NOR (3) NetBeans (3) OLD (3) PSP (3) SMARTY (3) comandos (3) css3 (3) AISLAMIENTOS (2) C++ (2) CONTROLERRORES (2) ELIMINAR (2) HOOK (2) INSERTAR (2) INST (2) MULTITABLA (2) POST (2) RECURSIVIDAD (2) SUBCONSULTAS (2) VISTAS (2) XSD (2) cURL (2) punteros (2) AJENA (1) BLOQUEOS (1) Byte (1) CREACION (1) CRM (1) Configuración (1) Controles (1) Datos (1) GOTFOCUS (1) IMAGENES (1) INDICES (1) JS (1) Lenght (1) MEDIA-QUERYS (1) Mingw (1) MonoDeveloped (1) OPTIMISTA (1) PDO (1) PESIMISTA (1) RESPONSIVE (1) SPEAK (1) Scanner (1) Serializacion (1) Streams (1) System (1) TPL (1) TRADUCCIÓN (1) USUARIOS (1) UseSystemPasswordChar (1) app_inventor (1) char (1) examenes (1) libreoffice (1) make (1) redes (1)