![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
![]()
Скопировал из книги Бьярна Страустропа вот этот исходник, проверял несколько раз - вроде все правильно, но в качестве значения постфиксного выражения программа упрямо выдает ноль. Пмогите разобраться, почему? И объясните, пожалуйста,что делают операторы в строках 39, 40, 41
Код:
Последний раз редактировалось Go6a; 19.04.2008 в 18:44. |
![]() |
![]() |
![]() |
#2 | |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
![]()
вот ссылка http://mf.grsu.by/Kafedry/kaf001/aca...ec_012?dwnld=1
4.2 Пример:вычисление постфиксного выражения |
![]() |
![]() |
![]() |
#4 | |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
![]()
Буду проверять дальше,
объясните, пожалуйста, что делают операторы: if ((v[i]>='0') && (v[i]<='9')) push(&top,0); while ((v[i]>='0')&&(v[i]<='9')) push(&top,10*pop(&top)+(v[i++]-'0')) |
![]() |
![]() |
![]() |
#6 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
Go6a, простите, не совсем понял. Я здесь вижу только "больше или равно", "меньше или равно", конъюнкцию - логическое И, сложение, умножение и постинкремент.... Ну ещё взятие адреса... О чём Вы?
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
![]()
Для чего нужны эти операторы в указанном выше исходнике программы по вычислению постфиксного выражения?
if ((v[i]>='0') && (v[i]<='9')) push(&top,0); while ((v[i]>='0')&&(v[i]<='9')) push(&top,10*pop(&top)+(v[i++]-'0')); Можете объяснить, что они делают и для чего нужны конкретно в этой программе? |
![]() |
![]() |
![]() |
#8 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
Это просто такой своеобразный перевод строки в число. В стэк поразрядно заталкиваются цифры из строки, превращаемые в число (цифра - '0' даёт число, которое ей соотвтствует).
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
![]()
Вобщем, я весь запутался.
push(&top,0) /* заталкивает в стек переменную типа Node, поле данных которой равно нулю*/ 10*pop(&top)/*затем функция pop выталкивает этот ноль, который умножается на 10,*/ (v[i++]-'0'));/*и зачем из следующего элемента массива вычитать ноль? от вычитания ноля ничего ж не меняется*/ |
![]() |
![]() |
![]() |
#10 | ||
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]() Цитата:
Цитата:
Не ноль, а символ '0'! '9'-'0' = 9 - обратите внимание на апострофы! |
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вычисление полинома | file | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 29.05.2008 21:00 |
Паскаль. Вычисление функции | СТАС48 | Помощь студентам | 0 | 30.11.2007 07:44 |
Вычисление интреграла | Kiedis | Помощь студентам | 19 | 23.05.2007 19:41 |
Вычисление Exp | Mickle | Общие вопросы Delphi | 1 | 26.04.2007 09:34 |
TDBGrid. Вычисление | Nic-x | БД в Delphi | 8 | 17.04.2007 08:19 |