#include <iostream>
using namespace std;
// written by Ste Cork, free for any and all use.
//
const char *Number_AsRomanString( int iNumber )
{
struct RomanDigit_t
{
char *m_psString;
int m_iValue;
};
static const RomanDigit_t RomanDigits[]=
{
{"M", 1000},
{"IM", 999},
{"VM", 995},
{"LM", 950},
{"CM", 900},
{"D", 500},
{"ID", 499},
{"VD", 495},
{"LD", 450},
{"CD", 400},
{"C", 100},
{"IC", 99},
{"VC", 95},
{"XC", 90},
{"L", 50},
{"XL", 40},
{"X", 10},
{"IX", 9},
{"V", 5},
{"IV", 4},
{"I", 1},
};
/*
static const RomanDigit_t RomanDigits[]=
{
{"M", 1000},
{"CM", 900},
{"D", 500},
{"CD", 400},
{"C", 100},
{"XC", 90},
{"L", 50},
{"XL", 40},
{"X", 10},
{"IX", 9},
{"V", 5},
{"IV", 4},
{"I", 1},
};
*/
static char sRomanString[40];
sRomanString[0] = '\0';
for (int i=0; iNumber && i<sizeof(RomanDigits)/
sizeof(RomanDigits[0]); i++)
{
while ( RomanDigits.m_iValue <= iNumber )
{
strcat( sRomanString, RomanDigits.m_psString );
iNumber -= RomanDigits.m_iValue;
}
}
return sRomanString;
}
main()
{
int num = 399;
cout << Number_AsRomanString(num) << endl;
cin.get();
}
[C++,PAScal,Алгоритм]Помогите с выводом Римских чисел
[COLOR="Red"]Предупреждаю : следующее нарушение - последнее.Пойдешь в БАН. Сколько можно нарушать Правила ? нарушение - 20 баллов за повтор темы .[/COLOR] модератор.
Цитата: Prince Firdavs
Дано число в арабской нумерации нужно перевести в римскую чтобы было наиболее короткая запись допустим 999=DCCCCLXXXXVIIII И ешё = IM. IM- пралный ответ так нужно выводить Пожалуста помогите !
Для записи целых чисел в римской нумерации используются семь основных чисел:
I = 1 V = 5 X = 10 L = 50 C = 100 D = 500 M = 1000
Меньшая цифра может быть записана и слева от большей, тогда ее следует вычесть из большей. В этом случае повторения меньшей цифры не допускаются. Существует шесть вариантов использования "правила вычитания":
IV = 4 IX = 9 XL = 40 XC = 90 CD = 400 CM = 900
те из вышесказанного 999 не должно быть IM, но если уже настолько упрощать числа, то:
Код:
Хм... Поиском не пробывал
Цитата: Prince Firdavs
Дано число в арабской нумерации нужно перевести в римскую чтобы было наиболее короткая запись допустим 999=DCCCCLXXXXVIIII И ешё = IM. IM- пралный ответ так нужно выводить Пожалуста помогите !
[COLOR="Red"]Предупреждаю : следующее нарушение - последнее.Пойдешь в БАН. Сколько можно нарушать Правила ? нарушение - 20 баллов за повтор темы .[/COLOR] модератор.
[COLOR="Red"]Предупреждаю : следующее нарушение - последнее.Пойдешь в БАН. Сколько можно нарушать Правила ? нарушение - 20 баллов за повтор темы .[/COLOR] модератор.
Где тема повторяется?
Цитата: Prince Firdavs
Дано число в арабской нумерации нужно перевести в римскую чтобы было наиболее короткая запись допустим 999=DCCCCLXXXXVIIII И ешё = IM. IM- пралный ответ так нужно выводить Пожалуста помогите !