int romanToInt(string s) { if(s.length() == 0) return 0; int ans = 0, temp = getRomanValue(s[0]); int curValue, lastValue = temp; for(int i = 1; i < s.length(); ++ i) { curValue = getRomanValue(s[i]); if(curValue == lastValue) temp += getRomanValue(s[i]); if(curValue > lastValue) temp = getRomanValue(s[i]) - temp; if(curValue < lastValue) { ans += temp; temp = getRomanValue(s[i]); } lastValue = curValue; } return ans + temp; }
int main() { char romanNumber[20]; int i, curNum; while(1) { curNum=0; printf("Input roman number: "); scanf("%s", romanNumber); if(checkRomanN(romanNumber)==0) { printf("Input a valid roman number\n"); continue; } for(i=0; i<strlen(romanNumber); i++) { if(getRomanValue(romanNumber[i])<getRomanValue(romanNumber[i+1])) { curNum+=getRomanValue(romanNumber[i+1]) - getRomanValue(romanNumber[i]); i++; } else curNum+=getRomanValue(romanNumber[i]); } if(curNum>256) { printf("Number is larger than 256\n"); continue; } else { printf("Roman number in decimal is: %d\n", curNum); break; } } return 1; }