none
CONVERTIR NUMEROS A ROMANOS RRS feed

  • Pregunta

  • Buenas Tardes.

    me pueden ayudar tengo el codigo en consola pero al pasarlos al windows for el resultado no me funciona les pego el codigo para que me ayuden.

    Saludos.

          private void button1_Click(object sender, EventArgs e)
            {
                int Miles = 0, Resto = 0, Cen = 0, Dec = 0, Uni = 0, N = 0;

               
                  //      MessageBox.Show("Ingrese un numero");
                    //Console.Write("Ingrese un Numero:");
                    N = int.Parse(textBox1.Text);
                    Miles = N / 1000;
                    Resto = N % 1000;
                    Cen = Resto / 100;
                    Resto = Resto % 100;
                    Dec = Resto / 10;
                    Resto = Resto % 10;
                    Uni = Resto;




               
                //MessageBox.Show("");
                //Console.Write("En Número Romanos es : ");

                switch (Miles)
                {
                    case 1: textBox2.Text=("M"); break;
                    case 2: textBox2.Text = ("MM"); break;
                    case 3: textBox2.Text = ("MMM"); break;
                }
                switch (Cen)
                {
                    case 1: textBox2.Text = ("C"); break;
                    case 2: textBox2.Text = ("CC"); break;
                    case 3: textBox2.Text = ("CCC"); break;
                    case 4: textBox2.Text = ("CD"); break;
                    case 5: textBox2.Text = ("D"); break;
                    case 6: textBox2.Text = ("DC"); break;
                    case 7: textBox2.Text = ("DCC"); break;
                    case 8: textBox2.Text = ("DCCC"); break;
                    case 9: textBox2.Text = ("CM"); break;
                }
                switch (Dec)
                {
                    case 1: textBox2.Text = ("X");
                        break;
                    case 2: textBox2.Text = ("XX");
                        break;
                    case 3: textBox2.Text = ("XXX");
                        break;
                    case 4: textBox2.Text = ("XL");
                        break;
                    case 5: textBox2.Text = ("L");
                        break;
                    case 6: textBox2.Text = ("LX");
                        break;
                    case 7: textBox2.Text = ("LXX");
                        break;
                    case 8: textBox2.Text = ("LXXX");
                        break;
                    case 9: textBox2.Text = ("XC");
                        break;
                }
                switch (Uni)
                {
                    case 1: textBox2.Text = ("I"); break;
                    case 2: textBox2.Text = ("II"); break;
                    case 3: textBox2.Text = ("III"); break;
                    case 4: textBox2.Text = ("IV"); break;
                    case 5: textBox2.Text = ("V"); break;
                    case 6: textBox2.Text = ("VI"); break;
                    case 7: textBox2.Text = ("VII"); break;
                    case 8: textBox2.Text = ("VIII"); break;
                    case 9: textBox2.Text = ("IX"); break;
                }

     

    domingo, 30 de octubre de 2011 21:07

Todas las respuestas

  • hola

    cual seria la causa por la cual no funciona, estas recibiendo un error ?

    no seria mejor la funcionalidad de conversion encapsularla en una funcion, para asi pode resutilizarla ?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 30 de octubre de 2011 21:14
  • Hola,

    Creo que el problema no es la función que es correcta sino el modo como la pasaste a WinForms.

    Seguramente antes donde pone textBox2.text = "LO QUE SEA"; habia un Console.Write("LO QUE SEA"), entonces claro en consola quedaba escrito todo independientemente y ahora deduzco que solo quedaran las unidades ya que es lo ultimo que tratas.

    Bien si ese es todo el problema se soluciona simplemente cambiando todos los = por un += de modo que quede asi textBox2.Text += "LO QUE SEA";

    De este modo se iran concatenando y hara el mismo efecto que te hacia el programa de consola.


    Vota mi respuesta si te ha sido útil. Gracias.
    lunes, 31 de octubre de 2011 18:36
  • Hola. me tome la molestia de transcribir una vieja rutina del vb6 al C# y cree esta clase que te convierte cualquier numero a romanos:

     Espero te ayude...

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Romanos
    {
        class numRoman
        {
            private string Roman(int Numero,int nt)
            {
                string cd = "";
                switch (Numero)
                {
                    case 0: break;
                    case 1:
                        switch(nt)
                        {
                            case 1:
                                cd = "I";
                                break;
                            case 2:
                                cd = "X";
                                break;
                            case 3:
                                cd = "C";
                                break;
                            case 4:
                                cd = "M";
                                break;
                            case 5:
                                cd = cd.PadRight(10, Convert.ToChar("M"));
                                break;
                        }
                        break;
                    case 2:
                        switch(nt)
                        {
                            case 1:
                                cd = "II";
                                break;
                            case 2:
                                cd = "XX";
                                break;
                            case 3:
                                cd = "CC";
                                break;
                            case 4:
                                cd = "MM";
                                break;
                            case 5:
                                cd = cd.PadRight(20, Convert.ToChar("M"));
                                break;
                        }
                        break;
                    case 3:
                        switch (nt)
                        {
                            case 1:
                                cd = "III";
                                break;
                            case 2:
                                cd = "XXX";
                                break;
                            case 3:
                                cd = "CCC";
                                break;
                            case 4:
                                cd = "MMM";
                                break;
                            case 5:
                                cd = cd.PadRight(30, Convert.ToChar("M"));
                                break;
                        }
                        break;
                    case 4:
                        switch (nt)
                        {
                            case 1:
                                cd = "IV";
                                break;
                            case 2:
                                cd = "LX";
                                break;
                            case 3:
                                cd = "CD";
                                break;
                            case 4:
                                cd = "MMMM";
                                break;
                            case 5:
                                cd = cd.PadRight(40, Convert.ToChar("M"));
                                break;
                        }
                        break;
                    case 5:
                        switch (nt)
                        {
                            case 1:
                                cd = "V";
                                break;
                            case 2:
                                cd = "X";
                                break;
                            case 3:
                                cd = "D";
                                break;
                            case 4:
                                cd = "MMMMM";
                                break;
                            case 5:
                                cd = cd.PadRight(50, Convert.ToChar("M"));
                                break;
                        }
                        break;
                    case 6:
                        switch (nt)
                        {
                            case 1:
                                cd = "VI";
                                break;
                            case 2:
                                cd = "LX";
                                break;
                            case 3:
                                cd = "DC";
                                break;
                            case 4:
                                cd = "MMMMMM";
                                break;
                            case 5:
                                cd = cd.PadRight(60, Convert.ToChar("M"));
                                break;
                        }
                        break;
                    case 7:
                        switch (nt)
                        {
                            case 1:
                                cd = "VII";
                                break;
                            case 2:
                                cd = "LXX";
                                break;
                            case 3:
                                cd = "DCC";
                                break;
                            case 4:
                                cd = "MMMMMMM";
                                break;
                            case 5:
                                cd = cd.PadRight(70, Convert.ToChar("M"));
                                break;
                        }
                        break;
                    case 8:
                        switch (nt)
                        {
                            case 1:
                                cd = "VIII";
                                break;
                            case 2:
                                cd = "LXXX";
                                break;
                            case 3:
                                cd = "DCCC";
                                break;
                            case 4:
                                cd = "MMMMMMMM";
                                break;
                            case 5:
                                cd = cd.PadRight(80, Convert.ToChar("M"));
                                break;
                        }
                        break;
                    case 9:
                        switch (nt)
                        {
                            case 1:
                                cd = "IX";
                                break;
                            case 2:
                                cd = "XC";
                                break;
                            case 3:
                                cd = "CM";
                                break;
                            case 4:
                                cd = "MMMMMMMMM";
                                break;
                            case 5:
                                cd = cd.PadRight(90, Convert.ToChar("M"));
                                break;
                        }
                        break;
    
                }
    
    
                return cd;
            }
    
            public String GetRomanNumber(int Number)
            {
                int n1, x, ln,to;
                string stri,cd,dgt;
                cd = Convert.ToString(Number);
                ln = cd.Length; stri = "";
                x=0;
                while(x<ln)
                {
                    dgt = cd.Substring(x, 1);                
                    n1 = Convert.ToInt32(dgt);
                    stri = stri + Roman(n1, ln - x);
                    x++;
                }
                return stri;
            }
    
        }
    }
    
    

    Solo descompone el numero y wala...

     Saludos JymmyT.

    martes, 8 de noviembre de 2011 7:36
  • A MI ME FUNCIONO ASI 

                                                                                                                                                                                             

     int entero = Convert.ToInt32(EntradaText.Text);

                int miles = entero/1000;
                int resmiles = entero % 1000;
                int centenas = resmiles / 100;
                int rescen = resmiles % 100;
                int decenas = rescen / 10;
                int resdec = rescen % 10;
                int unidades = resdec/1;




                string mil="";
                string cen="";
                string dec="";
                string uni="";


                switch (miles){
                    case 1: mil = "X";
                        break;
                    case 2: mil = "XX";
                        break;
                    case 3: mil = "XX";
                        break;
                }


                switch (centenas)
                {
                    case 1: cen = "C";
                        break;
                    case 2: cen = "CC";
                        break;
                    case 3: cen = "CCC";
                        break;
                    case 4: cen = "CD";
                        break;

                    case 5: cen = "D";
                        break;

                    case 6: cen = "DC";
                        break;
                    case 7: cen = "DCC";
                        break;
                    case 8: cen = "DCCC";
                        break;

                    case 9: cen = "CM";
                        break;


                }


                switch (decenas)
                {
                    case 1: dec = "X";
                        break;
                    case 2: dec = "XX";
                        break;
                    case 3: dec = "XX";
                        break;
                    case 4: dec = "XL";
                        break;

                    case 5: dec = "L";
                        break;

                    case 6: dec = "LX";
                        break;
                    case 7: dec = "LXX";
                        break;
                    case 8: dec = "LXXX";
                        break;

                    case 9: dec = "XC";
                        break;


                }



                switch (unidades)
                {
                    case 1: uni = "I";
                        break;
                    case 2: uni = "II";
                        break;
                    case 3: uni = "III";
                        break;
                    case 4: uni = "IV";
                        break;

                    case 5: uni = "V";
                        break;

                    case 6: uni = "VI";
                        break;
                    case 7: uni = "VII";
                        break;
                    case 8: uni = "VIII";
                        break;

                    case 9: uni = "IX";
                        break;


                }
















               SalidaText.Text=mil+cen+dec+uni;

    SALUDOS

    viernes, 17 de octubre de 2014 4:36
  • Buenas Tardes,

    Yo lo ocupe en java y me quedo de esta forma y funciona al 100%, Gracias

    public String funcionRomano(int Nu) {

            int Miles = 0, Resto = 0, Cen = 0, Dec = 0, Uni = 0, N = 0;

            Miles = Nu / 1000;
            Resto = Nu % 1000;
            Cen = Resto / 100;
            Resto = Resto % 100;
            Dec = Resto / 10;
            Resto = Resto % 10;
            Uni = Resto;
            String numero = "";

            switch (Miles) {
                case 1:
                    numero = numero + ("M");
                    break;
                case 2:
                    numero = numero + ("MM");
                    break;
                case 3:
                    numero = numero + ("MMM");
                    break;
            }
            switch (Cen) {
                case 1:
                    numero = numero + ("C");
                    break;
                case 2:
                    numero = numero + ("CC");
                    break;
                case 3:
                    numero = numero + ("CCC");
                    break;
                case 4:
                    numero = numero + ("CD");
                    break;
                case 5:
                    numero = numero + ("D");
                    break;
                case 6:
                    numero = numero + ("DC");
                    break;
                case 7:
                    numero = numero + ("DCC");
                    break;
                case 8:
                    numero = numero + ("DCCC");
                    break;
                case 9:
                    numero = numero + ("CM");
                    break;
            }
            switch (Dec) {
                case 1:
                    numero = numero + ("X");
                    break;
                case 2:
                    numero = numero + ("XX");
                    break;
                case 3:
                    numero = numero + ("XXX");
                    break;
                case 4:
                    numero = numero + ("XL");
                    break;
                case 5:
                    numero = numero + ("L");
                    break;
                case 6:
                    numero = numero + ("LX");
                    break;
                case 7:
                    numero = numero + ("LXX");
                    break;
                case 8:
                    numero = numero + ("LXXX");
                    break;
                case 9:
                    numero = numero + ("XC");
                    break;
            }
            switch (Uni) {
                case 1:
                    numero = numero + ("I");
                    break;
                case 2:
                    numero = numero + ("II");
                    break;
                case 3:
                    numero = numero + ("III");
                    break;
                case 4:
                    numero = numero + ("IV");
                    break;
                case 5:
                    numero = numero + ("V");
                    break;
                case 6:
                    numero = numero + ("VI");
                    break;
                case 7:
                    numero = numero + ("VII");
                    break;
                case 8:
                    numero = numero + ("VIII");
                    break;
                case 9:
                    numero = numero + ("IX");
                    break;
            }

            return numero;
        }

    jueves, 5 de abril de 2018 22:06
  • Hola
    Los números romanos mayores de 3999 hasta 39999 necesitan caracteres especiales
    para representar una raya encima del caracter.
    Creo que no existe una fuente así
    yo cree el mío, pero no es tan útil ya que con 3999 es suficiente.

    * Como ya saben los numeros romanos utilizan 7 letras mayusculas:

     I , V , X , L , C , D , M

    Ejem:

     996 =  CMXCVI
     997 =  CMXCVII
     998 =  CMXCVIII
     999 =  CMXCIX
    1000 =  M
    1001 =  MI
    1002 =  MII
    1003 =  MIII
    1004 =  MIV
    1005 =  MV
    1006 =  MVI

    Funciona al 100%

    Método recursivo

            public static string ToRoman(int v)
            {
                //  MAXIMO 3999
                string n = "";
                if (v == 0 || v > 3999) return n;
                if (v < 4) n = "I" + ToRoman(v - 1);
                else if (v == 4) n = "IV";
                else if (v < 9) n = "V" + ToRoman(v - 5);
                else if (v == 9) n = "IX";
                else if (v < 40) n = "X" + ToRoman(v - 10);
                else if (v < 50) n = "XL" + ToRoman(v - 40);
                else if (v < 90) n = "L" + ToRoman(v - 50);
                else if (v < 100) n = "XC" + ToRoman(v - 90);
                else if (v < 400) n = "C" + ToRoman(v - 100);
                else if (v < 500) n = "CD" + ToRoman(v - 400);
                else if (v < 900) n = "D" + ToRoman(v - 500);
                else if (v < 1000) n = "CM" + ToRoman(v - 9000);
                else if (v < 4000) n = "M" + ToRoman(v - 1000);
                return n;
            }
    Espero que les sea de utilidad..

    • Propuesto como respuesta Henry pk viernes, 2 de agosto de 2019 0:15
    • Editado Henry pk viernes, 2 de agosto de 2019 20:19
    jueves, 1 de agosto de 2019 23:32