Форум программистов, компьютерный форум CyberForum.ru

Перевод римских чисел в арабские - C++

Восстановить пароль Регистрация
 
Kostyas13994
2 / 2 / 0
Регистрация: 14.12.2012
Сообщений: 22
27.12.2012, 22:50     Перевод римских чисел в арабские #1
Доброй ночи всем.
Нужны наиболее рациональные и простые в реализации идеи для решения задачи.
Дан текст из заглавных латинских букв за которым следует пробел. Требуется определить, является ли этот текст правильной записью римскими цифрами числа от 1 до 999, и, если является, распечатать его арабскими цифрами.

Была мысль сделать 1000 строк case, но, сами понимаете.
Как реализовать?
Понимаю, что первый символ строки должен быть X/I/M/D/C/V/L - ничего не пропустил?
А вот дальше как? Каждый символ проверять?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2012, 22:50     Перевод римских чисел в арабские
Посмотрите здесь:

C++ Арабские в римские
Перевод римских цифр в арабские C++
C++ преобразовать арабские числа в римские
Проверрка ввода римских чисел C++
C++ Перевод римских чисел в арабские и наоборот
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
27.12.2012, 22:59     Перевод римских чисел в арабские #2
не совсем понял. Дана строка и в ней только римские цифры? Или могут быть слова и пр?
Kostyas13994
2 / 2 / 0
Регистрация: 14.12.2012
Сообщений: 22
27.12.2012, 23:03  [ТС]     Перевод римских чисел в арабские #3
Afflicted, в строке буквы латинского алфавита в произвольном порядке, без разделителей, только пробел в конце. Нужно определить, является ли этот произвольный порядок букв числом в римской записи
Примеры:
1. XII //вот строка, она является записью числа 12
2. XIIO //и вот строка, но она уже не будет являться записью числа, т.к. О не входит в запись римских чисел
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
27.12.2012, 23:15     Перевод римских чисел в арабские #4
ну вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
using namespace std;
 
int const  arab_[]   = {  1,   4,    5,   9,    10,  40,  50,   90,  100, 400,  500, 900,  1000};
char const *roman_[] = { "I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M" };
 
inline size_t translate(char *roman)
{
    const int m = countof(arab_)-1;
    size_t arab = 0;
    int len = strlen(roman), n = m, i = 0, pir;
 
    while(n >= 0 && i < len)
    {
        pir = n & 1;
        if( (roman[i] == roman_[n][0]) && (!pir || roman[i+1] == roman_[n][1]))
        {
            arab += arab_[n];
            i    += 1 + pir;
        }
        else n--;
    }
 
    return arab;
}
 
int main()
{
    char *str1 = "XII", *str2 = "XIO";
    cout << translate(str1) << endl << translate(str2) << endl;
 
    system("pause");
    return 0;
}
Kostyas13994
2 / 2 / 0
Регистрация: 14.12.2012
Сообщений: 22
27.12.2012, 23:29  [ТС]     Перевод римских чисел в арабские #5
Afflicted, ругается на const int m = countof(arab_)-1;
что подключить нужно?
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
27.12.2012, 23:30     Перевод римских чисел в арабские #6
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
#ifndef countof
    #define countof(array) (sizeof(array) / sizeof((array)[0]))
#endif
 
int const  arab_[]   = {  1,   4,    5,   9,    10,  40,  50,   90,  100, 400,  500, 900,  1000};
char const *roman_[] = { "I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M" };
 
//...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2012, 23:32     Перевод римских чисел в арабские
Еще ссылки по теме:

C++ Перевод римские цифры в арабские и обратно
C++ Печать римских цифр
Перевод чисел из строки в массив чисел C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kostyas13994
2 / 2 / 0
Регистрация: 14.12.2012
Сообщений: 22
27.12.2012, 23:32  [ТС]     Перевод римских чисел в арабские #7
Afflicted, работает, спасибо. Завтра додумаю, а сейчас собираюсь вспомнить, что такое сон. Большое спасибо за помощь!
Yandex
Объявления
27.12.2012, 23:32     Перевод римских чисел в арабские
Ответ Создать тему
Опции темы

Текущее время: 21:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru