zzz
Конспект лекций II семестр
09 April 2011 14:02
Сборка 23.11.2009
Вложения:
открыть | скачать - book2009pp197-254.djvu (496.8 KB)
открыть | скачать - book2009pp255-312.djvu (451.9 KB)
открыть | скачать - book2009pp313-370.djvu (503 KB)
открыть | скачать - book2009pp371-427.djvu (428.3 KB)
Re: Конспект лекций II семестр
07 June 2011 16:04
по-моему опечатка на 280 стр.

инфиксная форма: a + b / c * d - e * f
и постфиксная записана как: a b c / + d e f * - *

разве это верно? на сколько я знаю, операции наименее приоритетные записываются в конце, то есть должно быть:
a b c / d * e f * - +

хотя может быть я не правильно понял..
Re: Конспект лекций II семестр
07 June 2011 17:05
a + b / c * d - e * f

abc/d*+ef* - вот что должно поучиться
Посмотри повнимательнее на алгоритм(после 24 лабы сложно не знать, по крайней мере, для меня).

priority('+') < priority('/') priority('/') = priority('*')

Мы наткнулись на равный приоритет, значит деление надо выполнить раньше. Далее идём-идём, минус. Приоритет низкий. Выходит так, что надо ставить *+, что в стеке знаков.

Представь стек знаков, кста. С этого надо было начать.

читаем +, читаем /, Читаем * - вытесняем / и ставим в стек *. читаем -, вытесняем из стека сначала *, потом +, ставим в стек -, читаем *. Конец. Опустошаем стек, извлекая всё из него.

Как пример так.
Re: Конспект лекций II семестр
07 June 2011 18:06
Ну вообще-то я знаю алгритм, так как 24 лабу писал и далеко не только себе.

Вообще постфиксная форма же подразумевает сворачивание в переменные, возьмем мое:
a b c / d * e f * - +
(b c /) -> A

a A d * e f * - +
(A d *) -> B

a B e f * - +
(e f*) -> C

a B C - +
(B C -) -> D
a D +
в результате получаем правильное постфиксное выражение.

Рассмотрим твой:
a b c / d * + e f * -
(b c /) -> A

a A d * + e f * -
(A d*) -> B

a B + e f * -
(e f*) -> C

a B + C -
тоже самое же получается.

различие в алгоритмах в том, что я выталкивал при >=, а ты при > похоже, даже если твое более правильное, в лекциях опечатка.

a B C - +
a B + C -
вообще вроде как идентично, ведь если посмотреть на начала наших с тобой постфиксных выражений, там именно такая форма записи, как у меня, потом у тебя получается простая, у меня же остается составная.



Исправлений: 3. Последний раз редактировал MadD в 07.06.2011, 18:06.
Re: Конспект лекций II семестр
07 June 2011 19:07
MadD Написал:
-------------------------------------------------------
> Ну вообще-то я знаю алгритм,
> так как 24 лабу писал и
> далеко не только себе.

Ты крутой!
Re: Конспект лекций II семестр
07 June 2011 20:08
yarrr Написал:
-------------------------------------------------------
> MadD Написал:
> --------------------------------------------------
> -----
> > Ну вообще-то я знаю
> алгритм,
> > так как 24 лабу писал и
> > далеко не только себе.
>
> Ты крутой!
Да tongue sticking out smiley
Re: Конспект лекций II семестр
07 June 2011 21:09
MadD Написал:
-------------------------------------------------------
> Ну вообще-то я знаю алгритм,
> так как 24 лабу писал и
> далеко не только себе.
>
> различие в алгоритмах в
> том, что я выталкивал при >=,
> а ты при > похоже, даже если
> твое более правильное, в
> лекциях опечатка.
>
> a B C - +
> a B + C -
> вообще вроде как идентично,
> ведь если посмотреть на
> начала наших с тобой
> постфиксных выражений, там
> именно такая форма записи,
> как у меня, потом у тебя
> получается простая, у меня
> же остается составная.

Выражение a - b + c -> это ab-c+ и никак иначе! Если написать abc+-, то получишь a - (b+c) != a - b + c

Лабы можно делать многим и не всегда верно (все имеют право на ошибку, особенно когда учимся, и сами ошибались, не святые), так как не всегда преподаватели проверяют всё тщательно и проверяют полноценное понимание всего материала(нет времени банально на всех), но всегда лучше лишний раз попросить кого-нибудь объяснить и помочь, чем так эмоционально высказывать недовольствие и показывать свою MadD'ность.
zzz
Re: Конспект лекций II семестр
07 June 2011 21:09
a b c / + d e f * - *
Представьте себя стековым компьютером, перерабатывающим эту программу (очередь команд) слева направо:
1) глотаете операнды, пока не встретится знак операции: a b c;
2) на знак (двуместной) операции "/" изрыгаете (с переворотом) два операнда с и b на стол (в обратном порядке, деление некоммутативно);
3) приказываете АЛУ поделить их;
4) частное глотаете;
5) оператором "+" тоже давитесь, не глотаете, приказываете сложить последнюю пару операндов;
6) в результате сложения операнды заменяются суммой;
7) глотание d e f ;
8) умножение e и f;
9) вычитание его результата из d;
10) умножение умножение разности на оставшийся результат.
Re: Конспект лекций II семестр
07 June 2011 21:09
zzz Написал:
-------------------------------------------------------
> a b c / + d e f * - *



Тогда инфиксная запись выглядит так: (a+b/c)*(d-e*f)
В конспекте a + b / c * d - e * f


----------------------------------------------------------------------
Всё верно. Бесскобочная инфиксная запись.



Исправлений: 1. Последний раз редактировал Gray_Angel в 07.06.2011, 22:10.
Re: Конспект лекций II семестр
07 June 2011 22:10
Если я правильно понимаю, то там записан результат обхода дерева, а не само выражение, что естественно влечёт за собой отсутствие скобок. А деревья вроде обойдены правильно.
Re: Конспект лекций II семестр
07 June 2011 22:10
Zhuravlyow.A Написал:
-------------------------------------------------------
> Если я правильно понимаю,
> то там записан результат
> обхода дерева, а не само
> выражение, что естественно
> влечёт за собой отсутствие
> скобок. А деревья вроде
> обойдены правильно.

Точняк, в 4 строке после приведения обходов, об этом сказано.

Спасибо! П.С. Хоть ты посмотрел, что именно содержит эта страница. Я изначально подумала просто про стеки, приношу извинения.



Исправлений: 2. Последний раз редактировал Gray_Angel в 07.06.2011, 22:10.
Re: Конспект лекций II семестр
08 June 2011 00:12
Да, точно, там написано про бесскобочную запись, не заметил сначала, извините.
Gray_Angel, я не высказывал свои недовольства и "MadD'ность", как раз таки попросил меня поправить вроде бы без грубостей, если чем-то задел\обидел, извини.
К сожалению, только зарегистрированные пользователи могут писать в этом форуме.

Авторизоваться на форуме