Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[C++,PAScal,Алгоритм]Помогите с выводом Римских чисел

8.9K
16 ноября 2007 года
Prince Firdavs
34 / / 22.11.2006
Дано число в арабской нумерации нужно перевести в римскую чтобы было наиболее короткая запись допустим 999=DCCCCLXXXXVIIII И ешё = IM. IM- пралный ответ так нужно выводить Пожалуста помогите !

[COLOR="Red"]Предупреждаю : следующее нарушение - последнее.Пойдешь в БАН. Сколько можно нарушать Правила ? нарушение - 20 баллов за повтор темы .[/COLOR] модератор.
14K
16 ноября 2007 года
stimpi
100 / / 04.09.2007
Цитата: 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, но если уже настолько упрощать числа, то:

Код:
#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();
}
этот код нашел с 2рой ссылки с гугли, немного подправив его будет выдавать тебе числа упрощенные, если использовать задокументированный код, то будет "правильный перевод"
361
16 ноября 2007 года
Odissey_
661 / / 19.09.2006
Хм... Поиском не пробывал пользоваться?
8.9K
17 ноября 2007 года
Prince Firdavs
34 / / 22.11.2006
Цитата: Prince Firdavs
Дано число в арабской нумерации нужно перевести в римскую чтобы было наиболее короткая запись допустим 999=DCCCCLXXXXVIIII И ешё = IM. IM- пралный ответ так нужно выводить Пожалуста помогите !

[COLOR="Red"]Предупреждаю : следующее нарушение - последнее.Пойдешь в БАН. Сколько можно нарушать Правила ? нарушение - 20 баллов за повтор темы .[/COLOR] модератор.



Где тема повторяется?

320
17 ноября 2007 года
m_Valery
1.0K / / 08.01.2007
В 23:43 кто создал тему с тем же названием,с тем же содержанием и с теми же грамматическими ошибками ? Вот это кто писал в 23:43 ? Я удалил дубль - так что не умничай !

Цитата: Prince Firdavs
Дано число в арабской нумерации нужно перевести в римскую чтобы было наиболее короткая запись допустим 999=DCCCCLXXXXVIIII И ешё = IM. IM- пралный ответ так нужно выводить Пожалуста помогите !

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог