fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void ArabicToRoman (unsigned int numero, char *resultado) {
  5. char *centenas[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
  6. char *dezenas[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
  7. char *unidades[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
  8. int size[] = { 0, 1, 2, 3, 2, 1, 2, 3, 4, 2,};
  9.  
  10. while (numero >= 1000)
  11. {
  12. *resultado++ = 'M';
  13. numero -= 1000;
  14. }
  15.  
  16.  
  17. strcpy (resultado, centenas[numero/100]); resultado += size[numero/100]; numero = numero % 100;
  18. strcpy (resultado, dezenas[numero/10]); resultado += size[numero/10]; numero = numero % 10;
  19. strcpy (resultado, unidades[numero]); resultado += size[numero];
  20. }
  21.  
  22. int main()
  23. {
  24. char *romanNumber = malloc(sizeof(char) * 1024);
  25. int numero;
  26.  
  27. puts("Digite um valor a ser convertido: ");
  28. scanf("%d", &numero);
  29.  
  30. ArabicToRoman(numero, romanNumber);
  31. printf("O valor %d equivale %s em romano\n", numero, romanNumber);
  32.  
  33. return 0;
  34. }
  35.  
Success #stdin #stdout 0s 2384KB
stdin
635
stdout
Digite um valor a ser convertido: 
O valor 635 equivale DCXXXV em romano