Numeros Romanos

Iniciado por 05K4R1N, 3 Junio 2013, 21:42 PM

0 Miembros y 1 Visitante están viendo este tema.

edr89

#20
Encontre una forma para los numeros cuya longitud es par pero al correr el código se queda parado en la linea 21, meti un printf y esta arrojando el valor pero no continua :(

El compilador me esta dando una advertencia:
Incompatible implicit declaration of built-in function 'strlen'[Enabled by default]
(se me olvido agregar <string.h>)

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define M 1000
#define D 500
#define C 100
#define L 50
#define X 10
#define V 5
#define I 1
int main()
{
   int i,j,caracteres=0,arabigo[20]={0},resultado=0;
   char numero[20];
   printf("Escribe un numero romano:");
   gets(numero);
   caracteres = strlen(numero);
   for(i=0;i<caracteres;i++) //Convertir minusculas a mayusculas
   {
       numero[i] = toupper(numero[i]);
   }
printf("caracteres: %d\n",caracteres);
   for(i=0;i<caracteres;i++)
   {
       switch(numero[i])
       {
           case 'M':
               {
                   arabigo[i]= M;
                   break;
               }
           case 'D':
               {
                   arabigo[i]= D;
                   break;
               }
           case 'C':
               {
                   arabigo[i]= C;
                   break;
               }
           case 'L':
               {
                   arabigo[i]= L;
                   break;
               }
           case 'X':
               {
                   arabigo[i]= X;
                   break;
               }
           case 'V':
               {
                   arabigo[i]= V;
                   break;
               }
           case 'I':
               {
                   arabigo[i]= I;
                   break;
               }
          }
      }
       if(caracteres==1)
       {
           resultado+= arabigo[0];
       }
       else if(caracteres%2==0) //Cuando el numero que escribimos es par.
       {
           for(j=0;j<caracteres;j+2)
           {
               if(arabigo[j]-arabigo[j+1]<0)
               {
                   resultado+=arabigo[j+1]-arabigo[j];
               }
               else
               {
                   resultado+= arabigo[j]+arabigo[j+1];
               }
           }
       }
       printf("El numero romano %s en arabigo es: %d",numero[20],resultado);
}