Advertisement
a53

cifre_romane1

a53
Dec 8th, 2019
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. #include <cstdio>
  2. #define LMAX 1000
  3. #include <cstring>
  4. using namespace std;
  5. char roman[]="MDCLXVI ";
  6. int arab[]={1000,500,100,50,10,5,1,0};
  7.  
  8. int conv(char c)
  9. {
  10. int j=0;
  11. while(roman[j++]!=c&&j<8)
  12. ;
  13. if(j<8)
  14. return arab[--j];
  15. else
  16. return -1;
  17. }
  18.  
  19. int main()
  20. {
  21. char nrom[LMAX];
  22. int narab=0;
  23. int crt,urm;
  24. FILE *f=fopen("cifre_romane1.in","r");
  25. fscanf(f,"%s",nrom);
  26. FILE *g=fopen("cifre_romane1.out","w");
  27. /// Admise IV, IX, XL, XC, CD, CM
  28. if(strstr(nrom,"IIII")||strstr(nrom,"XXXX")||strstr(nrom,"CCCC")||strstr(nrom,"MMMM")
  29. ||strstr(nrom,"VV")||strstr(nrom,"LL")||strstr(nrom,"DD")
  30. ||strstr(nrom,"IIV")||strstr(nrom,"IIIV")
  31. ||strstr(nrom,"IIX")||strstr(nrom,"IIIX")
  32. ||strstr(nrom,"IL")||strstr(nrom,"IIL")||strstr(nrom,"IIIL")
  33. ||strstr(nrom,"IC")||strstr(nrom,"IIC")||strstr(nrom,"IIIC")
  34. ||strstr(nrom,"ID")||strstr(nrom,"IID")||strstr(nrom,"IIID")
  35. ||strstr(nrom,"IM")||strstr(nrom,"IIM")||strstr(nrom,"IIIM")
  36. ||strstr(nrom,"VX")||strstr(nrom,"VL")
  37. ||strstr(nrom,"VC")||strstr(nrom,"VD")||strstr(nrom,"VM")
  38. ||strstr(nrom,"XXL")||strstr(nrom,"XXXL")
  39. ||strstr(nrom,"XXC")||strstr(nrom,"XXXC")
  40. ||strstr(nrom,"XD")||strstr(nrom,"XXD")||strstr(nrom,"XXXD")
  41. ||strstr(nrom,"XM")||strstr(nrom,"XXM")||strstr(nrom,"XXXM")
  42. ||strstr(nrom,"LC")
  43. ||strstr(nrom,"CCD")||strstr(nrom,"CCCD")
  44. ||strstr(nrom,"CCM")||strstr(nrom,"CCCM")
  45. ||strstr(nrom,"DM"))
  46. {
  47. fprintf(g,"%s","Numar invalid");
  48. return 0;
  49. }
  50. int n=strlen(nrom);
  51. nrom[n]=' ',nrom[n+1]='\0';
  52. ++n;
  53. for(int i=0;i<n-1;++i)
  54. {
  55. crt=conv(nrom[i]);
  56. urm=conv(nrom[i+1]);
  57. if(crt>=urm)
  58. narab+=crt;
  59. else
  60. narab-=crt;
  61. }
  62. fprintf(g,"%d",narab);;
  63. return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement