( ** ЯЗЫКЕ С++ ) Напишите процедуру, которая выводит ** экран запись переданного ей числа...

0 голосов
137 просмотров

( НА ЯЗЫКЕ С++ ) Напишите процедуру, которая выводит на экран запись переданного ей числа
в римской системе счисления.
I -1, V – 5, X – 10, L – 50, C – 100, D – 500, M – 1000
Натуральные числа записываются при помощи повторения этих цифр. При этом,
если большая цифра стоит перед меньшей, то они складываются (принцип
сложения), если же меньшая стоит перед большей, то меньшая вычитается из
большей (принцип вычитания). Последнее правило применяется только во
избежание четырёхкратного повторения одной и той же цифры.
Для правильной записи больших чисел римскими цифрами необходимо сначала
записать число тысяч, затем сотен, затем десятков и, наконец, единиц.
При этом некоторые из цифр (I, X, C, M) могут повторяться, но не более трёх раз
подряд; таким образом, с их помощью можно записать любое целое число не более
3999 (MMMCMXCIX)


Информатика (103 баллов) | 137 просмотров
Дан 1 ответ
0 голосов

#include
#include
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);<br>system("pause");
return 0;
}

(4.2k баллов)