Хорошо, новичок здесь, но мне нужна небольшая помощь/понимание того, как начать писать конкретную программу. Я не прошу кого-то сделать это для меня, я просто прошу о подходе к этой проблеме, потому что я честно не знаю, как начать.Сканирование действительного целого числа
Программа, которую я должен написать, заключается в обнаружении действительных целых чисел. Однако, в этой программе, действительное число определяется как:
- 0 или более ведущие пробельные следуют ...
- дополнительный «+» или «-», а затем ...
- 1 или более цифр, за которыми следует не буквенно-цифровая, но не цифра '.' а затем 1 или более цифр.
Примеры действительных чисел: «1234», «1234», «1234.», «+1234», "12 + 34", "1234.", "1234 х" и «-1234» все целые числа, и ни один из «1234e5», «e1234», «1234,56» и «1234abc» не является.
До сих пор все, что я могу придумать, использует кучу операторов if для проверки действительных целых чисел, но я не могу помочь, но думаю, что должен быть лучший и более надежный подход, чем использование множества утверждений if для проверки каждый символ строки. Я не могу придумать какие-либо функции, которые были бы полезны мне, кроме использования isdigit() и, возможно, strtol()? Любой совет будет принят во внимание.
Поскольку это выглядит как упражнение в области компьютерных наук, могут быть границы для упражнения (запрещающие использование готовых функций преобразования и т. Д.). Тем не менее, у меня есть два слова для вас: регулярные выражения. –
'man strtol':« Строка может начинаться с произвольного количества пробелов (как определено isspace (3)), за которым следует один необязательный знак «+» или «-» ». Только нестандартная процедура состоит в том, чтобы запретить четкие значения с плавающей запятой (период начала); но для этого и есть его '** endptr'. – usr2564301
Если это действительно упражнение cs, вам следует использовать простой код вместо regexp. Поэтому проверяем все символы сложной логикой. – abbath