Nguythang

RomanConvert.c

Feb 22nd, 2016
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "roman_converter.h"
  5.  
  6. char *hundreds[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
  7. char *tens[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
  8. char *ones[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
  9.  
  10. /*
  11. * Function: ConvertToRoman
  12. * ----------------------------
  13. * Convert Arabic number to Roman number.
  14. * number: Arabic number.
  15. * returns: Roman number.
  16. */
  17. char* ConvertToRoman(int number) {
  18.  
  19. if (number <= 0 || number >= 4999)
  20. return NULL;
  21. else {
  22. char roman[12] = "";
  23. char* thousands[] = {"", "M", "MM", "MMM", "MMMM"};
  24. int thousand, hundred, ten, one;
  25. one = number % 10;
  26. ten = (number / 10) % 10;
  27. hundred = (number / 100) % 10;
  28. thousand = (number / 1000) % 10;
  29.  
  30. strcat(roman, thousands[thousand]);
  31.  
  32. strcat(roman, hundreds[hundred]);
  33. strcat(roman, tens[ten]);
  34. strcat(roman, ones[one]);
  35. // return roman;
  36. char* Return = malloc(sizeof (char)*12);
  37. strcpy(Return, strcat);
  38. return Return;
  39. }
  40.  
  41. }
  42.  
  43. int main() {
  44. printf("========== Arabic-Roman numerals converter ==========\n");
  45. printf("This program is about to convert a number from Arabic to Roman.\n");
  46. printf("(number must be an integer, larger than 0 and smaller than 4000\nEnter number: ");
  47. int number;
  48. scanf("%d", &number);
  49. char* roman = ConvertToRoman(number);
  50. if (roman == NULL)
  51. printf("Invalid input!\n");
  52. else
  53. printf("Value of Roman number is: %s", roman);
  54. }
  55.  
  56. RomanConvert.h
  57. #ifndef ROMAN_CONVERTER_H
  58. #define ROMAN_CONVERTER_H
  59.  
  60. char* ConvertToRoman(int number);
  61.  
  62. #endif /* ROMAN_CONVERTER_H */
Advertisement
Add Comment
Please, Sign In to add comment