在本教程中,我们将讨论将罗马数字转换为介于1到3999之间的十进制的程序。
为此,我们将获得一个随机的罗马数字。我们的任务是将给定的罗马数字转换为其十进制等效形式。
#include<bits/stdc++.h> using namespace std; //calculating the decimal value int value(char r){ if (r == 'I') return 1; if (r == 'V') return 5; if (r == 'X') return 10; if (r == 'L') return 50; if (r == 'C') return 100; if (r == 'D') return 500; if (r == 'M') return 1000; return -1; } //calculating decimal equivalent of given numeral int convert_decimal(string &str){ int res = 0; for (int i=0; i<str.length(); i++){ //getting value of digit int s1 = value(str[i]); if (i+1 < str.length()){ int s2 = value(str[i+1]); if (s1 >= s2){ res = res + s1; } else{ res = res + s2 - s1; i++; } } else{ res = res + s1; } } return res; } int main(){ string str ="MCMIV"; cout << "Integer form:" << convert_decimal(str) << endl; return 0; }
输出结果
Integer form:1904