将介于 1 到 3999 之间的罗马数字转换为十进制的 C++ 代码
在本教程中,我们将讨论一个程序,将介于 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
广告