• Sábado 14 de Diciembre de 2024, 20:32

Autor Tema:  programa c q pase numeros decimales a romanos  (Leído 1949 veces)

josepe0069

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
programa c q pase numeros decimales a romanos
« en: Miércoles 13 de Enero de 2010, 11:49 »
0
Hola a todos a ver si me podriais decir como hacer un programa en C q pase numeros decimales a numeros romanos!del 1 al 3999, solo utilizando bucles y condicional if! gracias de antemano!

camaradakoba

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: programa c q pase numeros decimales a romanos
« Respuesta #1 en: Viernes 15 de Enero de 2010, 02:39 »
0
yo tengo esto ojala te sirva
Código: C++
  1.  
  2. void main()
  3. {
  4.     char romano[10];
  5.     long entero;
  6.     char caracter;
  7.     int i,longitud;
  8.  
  9.     cout<<"Ingrese numero romano correctamente:";
  10.     cin>>romano;
  11.    
  12.     longitud = strlen(romano);
  13.     entero = 0;
  14.     for(i=longitud-1;i>=0;i--)
  15.     {   caracter = romano[i];
  16.         switch(caracter)
  17.         {
  18.         case 'M':       entero += 1000; break;
  19.         case 'D': if(i<longitud-1 && romano[i+1]== 'M')
  20.                 entero -= 500;
  21.             else    entero += 500;  break;
  22.         case 'C': if(i<longitud-1 && strchr("DM", romano[i+1]))
  23.                 entero -= 100;
  24.             else    entero += 100;  break;
  25.         case 'L': if(i<longitud-1 && strchr("CDM", romano[i+1]))
  26.                 entero -= 50;
  27.             else    entero += 50;   break;
  28.         case 'X': if(i<longitud-1 && strchr("LCDM", romano[i+1]))
  29.                 entero -= 10;
  30.             else    entero += 10;   break;
  31.         case 'V': if(i<longitud-1 && strchr("XLCDM", romano[i+1]))
  32.                 entero -= 5;
  33.             else    entero += 5;    break;
  34.         case 'I': if(i<longitud-1 && strchr("VXLCDM", romano[i+1]))
  35.                 entero -= 1;
  36.             else    entero += 1;    break;
  37.         }
  38.     }
  39.  
  40.