|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.04.2008, 18:41 | #1 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
Вычисление постфиксного выр-я на С++
Скопировал из книги Бьярна Страустропа вот этот исходник, проверял несколько раз - вроде все правильно, но в качестве значения постфиксного выражения программа упрямо выдает ноль. Пмогите разобраться, почему? И объясните, пожалуйста,что делают операторы в строках 39, 40, 41
Код:
Последний раз редактировалось Go6a; 19.04.2008 в 18:44. |
19.04.2008, 23:33 | #2 | |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Цитата:
|
|
19.04.2008, 23:51 | #3 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
вот ссылка http://mf.grsu.by/Kafedry/kaf001/aca...ec_012?dwnld=1
4.2 Пример:вычисление постфиксного выражения |
20.04.2008, 00:03 | #4 | |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Цитата:
|
|
20.04.2008, 00:09 | #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')) |
20.04.2008, 00:22 | #6 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Go6a, простите, не совсем понял. Я здесь вижу только "больше или равно", "меньше или равно", конъюнкцию - логическое И, сложение, умножение и постинкремент.... Ну ещё взятие адреса... О чём Вы?
|
20.04.2008, 00:27 | #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')); Можете объяснить, что они делают и для чего нужны конкретно в этой программе? |
20.04.2008, 00:32 | #8 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Это просто такой своеобразный перевод строки в число. В стэк поразрядно заталкиваются цифры из строки, превращаемые в число (цифра - '0' даёт число, которое ей соотвтствует).
|
20.04.2008, 00:47 | #9 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
Вобщем, я весь запутался.
push(&top,0) /* заталкивает в стек переменную типа Node, поле данных которой равно нулю*/ 10*pop(&top)/*затем функция pop выталкивает этот ноль, который умножается на 10,*/ (v[i++]-'0'));/*и зачем из следующего элемента массива вычитать ноль? от вычитания ноля ничего ж не меняется*/ |
20.04.2008, 00:54 | #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 |