Разбор добавил Владимир Гуровиц
Разбор добавил Валерий Толстов
Данную задачу можно решить используя диаграмму переходов. Возможное число состояний в диаграмме - 7. Вот какие могут быть состояния:
0-ое состояние:
Попадаем в него вначале. Переходим к 1-ому, если встречается знак. Переходим ко 2-ому, если встречается цифра. В других случаях запись числа неверна.
1-ое состояние:
Переходим ко 2-ому, если встречается цифра. В других случаях запись числа неверна.
2-ое состояние:
Переходим снова ко 2-ому, если встречается цифра. Переходим ко 3-ему, если встречается точка. Переходим ко 5-ому, если встречается символ 'E' или 'e'. Если символы закончились, запись верна, в других случаях запись числа неверна.
3-ье состояние:
Переходим ко 4-ому, если встречается цифра. В других случаях запись числа неверна.
4-ое состояние:
Переходим снова ко 4-ому, если встречается цифра. Переходим ко 5-ому, если встречается символ 'E' или 'e'. Если символы закончились, запись верна, в других случаях запись числа неверна.
5-ое состояние:
Попадаем в него вначале. Переходим к 6-ому, если встречается знак. Переходим ко 7-ому, если встречается цифра. В других случаях запись числа неверна.
6-ое состояние:
Переходим ко 7-ому, если встречается цифра. В других случаях запись числа неверна.
7-ое состояние:
Переходим снова ко 7-ому, если встречается цифра. Если символы закончились, запись верна, в других случаях запись числа неверна.
Отредактировал(а) Валерий Толстов
Отредактировал(а) Кирилл Девяткин
Вещественное число задается следующим образом (форма Бэкуса-Наура):
"Number" ::= ["Sign"] "digit" {"digit"}["Separator" "digit" {"digit"}]["Exponent" ["Sign"] "digit" {"digit"}]
"digit" ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
"Sign" ::= '+' | '-'
"Separator" ::= '.'
"Exponent" ::= 'E' | 'e'
Требуется проверить, является ли вводимая строка корректной записью числа.
Выходные данные
Необходимо вывести YES или NO в зависимости от того, является ли данная строка записью одного вещественного числа.