#include<stdio.h>
void calc(int index);
int romanToInt(char * s,int* index);
int findIndex(char x);
void minusCalc(int index,int nextIndex,int* currIndex);
int nums[] = {1,5,10,50,100,500,1000};
int result = 0;
int main(){
int index = 0;
char* p = "MCMXCIV";
int result = romanToInt(p,&index);
}
int romanToInt(char * s,int* index){
char x = s[*index];
char next = s[*index+1];
while(x!= '\x00'){
int tempIndex = *index+1;
char next = s[tempIndex];
int xIndex = findIndex(x);
if(next == '\x00'){
calc(xIndex);
break;
}
int nextIndex = findIndex(next);
if((xIndex < nextIndex) && nextIndex - xIndex > 2){
return -1;
}
if((xIndex < nextIndex) && nextIndex - xIndex <= 2){
//minusCalc;
minusCalc(xIndex,nextIndex,index);
}else{
calc(xIndex);
}
x = s[++(*index)];
}
return result;
}
int findIndex(char x){
char romans[] = {'I','V','X','L','C','D','M'};
for(int i = 0; i < 7; i++){
if(romans[i] == x){
return i;
}
}
return -1;
}
void calc(int index){
result = result+ nums[index];
}
void minusCalc(int index,int nextIndex,int* currIndex){
result = result + nums[nextIndex] - nums[index];
(*currIndex)++;
}