У меня есть алгоритм, который должен взять строку с именем str
и проверить его против определенного правила определяется как:Проверяется IX или IV следует другому персонаж
НИЧЕГО приходит после IX или IV. Он будет печатать законным, если правило не нарушено, и нелегально, если правило нарушено.
Вот мой код, который я создал:
string str = "MXCIVXX";
int length = str.length();
bool legal = true;
for (int i = 0; i < length; i++) {
if ((str[i] == 'I' && str[i + 1] == 'X') && (str[i + 2] != '/0'))
legal = false;
if ((str[i] == 'I' && str[i + 1] == 'V') && (str[i + 2] != '/0'))
legal = false;
}
if (legal == true)
cout << "Legal" << endl;
else if (legal == false)
cout << "Illegal" << endl;
Я испытал несколько римские цифры в строке, но он печатает правомочным, если IX следует другой символ в строке. Как я могу исправить это, чтобы подтвердить, что за IX или IV не следует другой символ?
«_NOTHING приходит после IX или IV .._» не Define НИЧЕГО, вы имеете в виду только пространство? конец линии? никаких других римских цифр? –
Отлаживайте его шаг за шагом и посмотрите, почему это происходит. Это то, что вы должны делать, когда ваша программа не работает. – user31264
Ничто, как ни в каком другом персонаже, должно последовать за ним. Последние 2 символа - IX или IV. –