Как сделать парсер мат. выражений в котором аргументы могут иметь длину больше чем 1? В общем то разобрался с примером как делать вычисление математического выражения, но в на данный момент программа вычисляет примеры в которых аргументы находятся в диапазоне от 0 до 9. Как сделать чтобы аргументы могли быть к примеру от 0 до 10к? Можно было бы в проверке диапазона сравнивать со строкой "10000", но хз как вытащит сначала из входной строки то что нужно, непонятно например из строки 954+*, что брать, 9 или 95 к примеру.Stack для преобразования инфиксной записи в постфикснуюКод для преобразования инфиксной записи в постфикснуюПарсер постфиксной записи и вычисление выражения
Для того чтобы парсер математических выражений мог работать с числами большей длины, вам нужно модифицировать вашу программу следующим образом:
Вместо того, чтобы сравнивать каждый символ с символами '0'-'9', вам нужно определять границы числа и считывать все последовательные символы, составляющие число. Например, если вы встретили символ, лежащий в диапазоне от '0' до '9', вы будете добавлять его к текущему числу, пока не встретите символ, который не является цифрой.
После того, как вы считали число, вы должны преобразовать его из строки в число (например, с помощью функции atoi).
Модифицируйте код для преобразования инфиксной записи в постфиксную так, чтобы он правильно обрабатывал числа большей длины.
Обработайте постфиксную запись с числами большей длины в вашем парсере постфиксной записи и выполните арифметические операции.
Надеюсь, это поможет вам расширить возможности вашего парсера математических выражений! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.
Для того чтобы парсер математических выражений мог работать с числами большей длины, вам нужно модифицировать вашу программу следующим образом:
Вместо того, чтобы сравнивать каждый символ с символами '0'-'9', вам нужно определять границы числа и считывать все последовательные символы, составляющие число. Например, если вы встретили символ, лежащий в диапазоне от '0' до '9', вы будете добавлять его к текущему числу, пока не встретите символ, который не является цифрой.
После того, как вы считали число, вы должны преобразовать его из строки в число (например, с помощью функции atoi).
Модифицируйте код для преобразования инфиксной записи в постфиксную так, чтобы он правильно обрабатывал числа большей длины.
Обработайте постфиксную запись с числами большей длины в вашем парсере постфиксной записи и выполните арифметические операции.
Надеюсь, это поможет вам расширить возможности вашего парсера математических выражений! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.