Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #define LMAX 1000
- #include <cstring>
- using namespace std;
- char roman[]="MDCLXVI ";
- int arab[]={1000,500,100,50,10,5,1,0};
- int conv(char c)
- {
- int j=0;
- while(roman[j++]!=c&&j<8)
- ;
- if(j<8)
- return arab[--j];
- else
- return -1;
- }
- int main()
- {
- char nrom[LMAX];
- int narab=0;
- int crt,urm;
- FILE *f=fopen("cifre_romane1.in","r");
- fscanf(f,"%s",nrom);
- FILE *g=fopen("cifre_romane1.out","w");
- /// Admise IV, IX, XL, XC, CD, CM
- if(strstr(nrom,"IIII")||strstr(nrom,"XXXX")||strstr(nrom,"CCCC")||strstr(nrom,"MMMM")
- ||strstr(nrom,"VV")||strstr(nrom,"LL")||strstr(nrom,"DD")
- ||strstr(nrom,"IIV")||strstr(nrom,"IIIV")
- ||strstr(nrom,"IIX")||strstr(nrom,"IIIX")
- ||strstr(nrom,"IL")||strstr(nrom,"IIL")||strstr(nrom,"IIIL")
- ||strstr(nrom,"IC")||strstr(nrom,"IIC")||strstr(nrom,"IIIC")
- ||strstr(nrom,"ID")||strstr(nrom,"IID")||strstr(nrom,"IIID")
- ||strstr(nrom,"IM")||strstr(nrom,"IIM")||strstr(nrom,"IIIM")
- ||strstr(nrom,"VX")||strstr(nrom,"VL")
- ||strstr(nrom,"VC")||strstr(nrom,"VD")||strstr(nrom,"VM")
- ||strstr(nrom,"XXL")||strstr(nrom,"XXXL")
- ||strstr(nrom,"XXC")||strstr(nrom,"XXXC")
- ||strstr(nrom,"XD")||strstr(nrom,"XXD")||strstr(nrom,"XXXD")
- ||strstr(nrom,"XM")||strstr(nrom,"XXM")||strstr(nrom,"XXXM")
- ||strstr(nrom,"LC")
- ||strstr(nrom,"CCD")||strstr(nrom,"CCCD")
- ||strstr(nrom,"CCM")||strstr(nrom,"CCCM")
- ||strstr(nrom,"DM"))
- {
- fprintf(g,"%s","Numar invalid");
- return 0;
- }
- int n=strlen(nrom);
- nrom[n]=' ',nrom[n+1]='\0';
- ++n;
- for(int i=0;i<n-1;++i)
- {
- crt=conv(nrom[i]);
- urm=conv(nrom[i+1]);
- if(crt>=urm)
- narab+=crt;
- else
- narab-=crt;
- }
- fprintf(g,"%d",narab);;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement