Есть ли простой способ проверить строки римских цифр, которые являются входными данными для функции преобразования римскC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Есть ли простой способ проверить строки римских цифр, которые являются входными данными для функции преобразования римск

Сообщение Anonymous »

Я пытаюсь написать функцию, которая преобразует строку римских цифр в целое число.

Код: Выделить всё

namespace tbx
{
// Parameter `r` is treated as a "local" variable inside the
// function, where it is converted to upper case. That is why
// it is a value parameter, rather than a const reference.
int roman_numeral_to_int(std::string r);  // return 0 if `r` is malformed
}
В Stack Overflow есть множество вопросов о преобразовании римских цифр, но ни в одном ответе не делается попытка отклонить неверно сформированные строки римских цифр. Это связано с тем, что они используют алгоритмы, которые просто сканируют строку и добавляют или вычитают значения различных символов римских цифр, которые она содержит.
В результате римские цифры имеют неправильный формат, например VV, IXIX и XM «успешно» преобразованы. Эти примеры дают соответственно 10, 18 и 990.
Есть ли простой способ проверить строки римских цифр, которые являются входными данными для функции преобразования римских цифр? Я хотел бы, чтобы моя функция возвращала 0, когда она обнаруживает неверную римскую цифру.

Подробнее здесь: https://stackoverflow.com/questions/782 ... nputs-to-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»