(на языке с++ ) напишите процедуру, которая выводит на экран запись переданного ей числа в римской системе счисления. i -1, v – 5, x – 10, l – 50, c – 100, d – 500, m – 1000 натуральные числа записываются при повторения этих цифр. при этом, если большая цифра стоит перед меньшей, то они складываются (принцип сложения), если же меньшая стоит перед большей, то меньшая вычитается из большей (принцип вычитания). последнее правило применяется только во избежание четырёхкратного повторения одной и той же цифры. для правильной записи больших чисел римскими цифрами необходимо сначала записать число тысяч, затем сотен, затем десятков и, наконец, единиц. при этом некоторые из цифр (i, x, c, m) могут повторяться, но не более трёх раз подряд; таким образом, с их можно записать любое целое число не более 3999 (mmmcmxcix)
#include <string>
using namespace std;
string arabicToRoman(unsigned &number)
{
const unsigned count = 13;unsigned arabic[count] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1
}, i, j;
string roman[count] = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX",
"V", "IV", "I" }, result = "";
for (i = 0; i < count; i++) {
for (j = 0; j < number / arabic[i]; j++) {
result += roman[i];
}
number %= arabic[i];
}
return result;
}
int main()
{
unsigned uin = 0;
cin >> uin;
cout << arabicToRoman(uin);
system("pause");
return 0;
}