Números romanos a decimal

Programa que convierte un número romano por ejemplo “XVVVVIII” a decimal “33” mediante una función con una cadena de caracteres con el número romano.

Suponemos que se pueden poner 4 caracteres iguales en vez de restar, es decir, se hará IIII en vez de IV. De esta forma, se trata de sumar valores dependiendo de qué caracter se trate.


IFrame


#include <stdio.h>
#include <string.h>

int rom2dec(char s[]){
int i,r=0,valor;

for(i=0;i<strlen(s);i++){
switch(s[i]){
case ‘I’:valor=1;break;
case ‘V’:valor=5;break;
case ‘X’:valor=10;break;
case ‘L’:valor=50;break;
case ‘C’:valor=100;break;
case ‘D’:valor=500;break;
case ‘M’:valor=1000;break;
default: break;
}
r+=valor;
}
return r;
}

int main(){
char cad[20];
int decimal;

printf(“Escribe un número romano\n:”);
scanf(“%s”,cad);
decimal=rom2dec(cad);
printf(“El valor decimal de %s es %d”,cad,decimal);

return 0;
}

Más ejercicios en https://www.youtube.com/channel/UCK05KbyByXPCMRJEqyL4VXw/videos