Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - nya_26

Páginas: [1]
1
Hola, he buscado muchos códigos para convertir de numero romano a decimal pero a la mayoría no le entiendo a el 100% alguien me podría explicar qué hace este codigo :( :( :( :( :) :) :) :) :) ;D ;D ;D ;D ;D ;D



Código: [Seleccionar]
using System; 
    using System.Text; 
     
    namespace RomanNumerals 
    { 
        static class Roman 
        { 
            static string[] roman1 = { "MMM", "MM", "M" }; 
            static string[] roman2 = { "CM", "DCCC", "DCC", "DC", "D", "CD", "CCC", "CC", "C" }; 
            static string[] roman3 = { "XC", "LXXX", "LXX", "LX", "L", "XL", "XXX", "XX", "X" }; 
            static string[] roman4 = { "IX", "VIII", "VII", "VI", "V", "IV", "III", "II", "I" }; 
     
            public static bool TryParse(string text, out int value) 
            { 
                value = 0; 
                if (String.IsNullOrEmpty(text)) return false; 
                text = text.ToUpper(); 
                int len = 0; 
     
                for (int i = 0; i < 3; i++) 
                { 
                    if (text.StartsWith(roman1[i])) 
                    { 
                        value += 1000 * (3 - i); 
                        len = roman1[i].Length; 
                        break; 
                    } 
                } 
     
                if (len > 0) 
                { 
                    text = text.Substring(len); 
                    len = 0; 
                } 
     
                for (int i = 0; i < 9; i++) 
                { 
                    if (text.StartsWith(roman2[i])) 
                    { 
                        value += 100 * (9 - i); 
                        len = roman2[i].Length; 
                        break; 
                    } 
                } 
     
                if (len > 0) 
                { 
                    text = text.Substring(len); 
                    len = 0; 
                } 
     
                for (int i = 0; i < 9; i++) 
                { 
                    if (text.StartsWith(roman3[i])) 
                    { 
                        value += 10 * (9 - i); 
                        len = roman3[i].Length; 
                        break; 
                    } 
                } 
     
                if (len > 0) 
                { 
                    text = text.Substring(len); 
                    len = 0; 
                } 
     
                for (int i = 0; i < 9; i++) 
                { 
                    if (text.StartsWith(roman4[i])) 
                    { 
                        value += 9 - i; 
                        len = roman4[i].Length; 
                        break; 
                    } 
                } 
     
                if (text.Length > len) 
                { 
                    value = 0; 
                    return false; 
                } 
     
                return true; 
            } 
     
            public static string ToRoman(int num) 
            { 
                if (num > 3999) throw new ArgumentException("Too big - can't exceed 3999"); 
                if (num < 1) throw new ArgumentException("Too small - can't be less than 1"); 
                int thousands, hundreds, tens, units; 
                thousands = num / 1000; 
                num %= 1000; 
                hundreds = num / 100; 
                num %= 100; 
                tens = num / 10; 
                units = num % 10; 
                var sb = new StringBuilder(); 
                if (thousands > 0) sb.Append(roman1[3 - thousands]); 
                if (hundreds > 0) sb.Append(roman2[9 - hundreds]); 
                if (tens > 0) sb.Append(roman3[9 - tens]); 
                if (units > 0) sb.Append(roman4[9 - units]); 
                return sb.ToString(); 
            } 
        }   
     
        class Program 
        { 
            static void Main() 
            { 
                string[] romans = { "I", "MMIV", "DCL", "CCXXII", "IIII", "CZ", "MLXVI", "III", "DCCXIV", "MIM" }; 
                int value = 0; 
     
                foreach (string roman in romans) 
                { 
                    if (Roman.TryParse(roman, out value)) Console.WriteLine("{0} = {1}", roman, value); 
                } 
     
                Console.WriteLine(); 
     
                int[] numbers = { 1, 2004, 650, 222, 4, 99, 1066, 3, 714, 1999, 3999 }; 
     
     
                foreach (int number in numbers) 
                { 
                    Console.WriteLine("{0} = {1}", number, Roman.ToRoman(number)); 
                } 
     
                Console.ReadKey(); 
            } 
             
        } 
    } 

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".