Функциональная логическая схема
|
|
Hunter | Дата: Пятница, 02.05.2008, 19:39 | Сообщение # 1 |
Новичок
Группа: Пользователи
Сообщений: 8
Статус: Offline
| Добрый день. Подскажите пожалуйста как решить следующую задачу : " Нужно написать программу которая строит функциональную логическую схему за структурной формулой. " Можете пожалуйста объяснить как это должно выглядеть? С чего начать? Я просто не представляю как ето должно выглядеть, возможно где-то есть похожие примеры. насколько я понял задание мне нужно написать програму которая будет рисовать коньюкцию, дизьюкцию, вообщем елементарные логические операции. например вводиш A&B&C а программа должо рисовать (с помощью graf) чтото типа етого : http://infologos.narod.ru/234.htm заранее большое спасибо за помощь
|
|
| |
Seqular | Дата: Пятница, 02.05.2008, 20:45 | Сообщение # 2 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Hunter, Задачка, мягко скажем, непростая. Даже не знаю, с чего начать решение. Собственно, не важно на самом деле, через GRAPH или не через GRAPH решать. Важно разобраться в принципе.И вот что-то не очень уверен, что программа должна рисовать элементарные логические операции. Было бы слишком просто. Может понадобится рисовать и более сложные. А в простом варианте, думаю, нужно будет разделить строку-выражение по приоритетам. Затем в порядке приоритета вывести на экран, рисуя фигуры. Тут нужно уже идею развивать о том, какие фигуры рисовать. Соответственно, если дизьюнкция - то параллельные ключи. Если коньюнкция - то последовательные. А если инверсия, что рисовать можно? :-) Я не знаю даже. Треугольник?
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Seqular | Дата: Пятница, 02.05.2008, 20:48 | Сообщение # 3 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Если рисовать для элементарных операций и только для тех, что на том сайте, что ты ссылку дал, то лучше всего сделать так: Заготовить спрайты-кирпичики, либо забить их в процедуры. Положение кирпичика запоминать. И схему рисовать последовательно. Ну а остальное - разложение по приоритетам, рисование соответствующих моделей.
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Alexander | Дата: Пятница, 02.05.2008, 20:53 | Сообщение # 4 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote А если инверсия, что рисовать можно? :-) not Это похоже курсовая, тут думать много придётся.
Скажем дружно- нафиг нужно!
Сообщение отредактировал Alexander - Суббота, 03.05.2008, 00:26 |
|
| |
Hunter | Дата: Пятница, 02.05.2008, 21:53 | Сообщение # 5 |
Новичок
Группа: Пользователи
Сообщений: 8
Статус: Offline
| тоесть написать 3 процедуры которые будут рисовать инвертор дизьюнктор и коньюнктор. потом зделать анализ формулы. в зависимости от нее вызывать определеные процедуры? к примеру V - дизьюнктор, & - коньюнктор ! - инвертор c формулой A V B или A & B будет рабоать нормально. Но как зделать чтобы оно выводило рисунок а рядом с ним другой, в случаее формулы A V B & C
|
|
| |
Pavel | Дата: Суббота, 03.05.2008, 00:44 | Сообщение # 6 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Ну так тут и надо будет подумать! Quote (Hunter) в случаее формулы A V B & C Пока мыслей нет, но думаю это все решабельно! У нас уже ночь. Я спать. Завтра обдумаю.
|
|
| |
Pavel | Дата: Суббота, 03.05.2008, 00:56 | Сообщение # 7 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Кстати. От перестановки членов дизъюнкции/конъ.. результат не меняется. Так что тут надо бы еще оговориться, можно ли преобразовывать формулы или нет?
|
|
| |
Alexander | Дата: Суббота, 03.05.2008, 01:39 | Сообщение # 8 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Эмм... если строить из выключателей, то так: Но это не просто грубо, а кощунственно. Вот из логических элементов: Это уже похоже на правду. Если вам нужно из выключателей, то всё совсем просто. Quote От перестановки членов дизъюнкции/конъ.. результат не меняется. Это почему?! В алгебре логики есть огромное количество законов: коммутативность, идемпотентность, ассоциативность, дистрибутивность, законы де Моргана и т.д. но ваше утверждение не верно. Например: Code A | B & C != A & B | C 1 | 3 & 5 != 1 & 3 | 5 1 != 5
Скажем дружно- нафиг нужно!
Сообщение отредактировал Alexander - Суббота, 03.05.2008, 01:54 |
|
| |
Hunter | Дата: Суббота, 03.05.2008, 02:14 | Сообщение # 9 |
Новичок
Группа: Пользователи
Сообщений: 8
Статус: Offline
| выключатели наверно не подойдут. нужно строить из логических елментов. преобразовывать формулы.. ну нет наверное.. какую ввел такуюи нарисовало. если в отедльных процедрах написать рисование схемы с определенными координатами, то если формула будет из 3х членов то рисунки будут налажоваться? или нет?
|
|
| |
Alexander | Дата: Суббота, 03.05.2008, 02:24 | Сообщение # 10 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote если формула будет из 3х членов то рисунки будут налажоваться? Что значит "налажоваться"? Простые схемы типа A&b&C|D&E&Z строить легко, проблемы будут со схемами типа: (A & | (C | D & !B), тут вы должны будете её преобразовать в простую либо строить блоками.
Скажем дружно- нафиг нужно!
|
|
| |
Hunter | Дата: Суббота, 03.05.2008, 02:56 | Сообщение # 11 |
Новичок
Группа: Пользователи
Сообщений: 8
Статус: Offline
| Вот смотрите: формула A | B & C вызывается процедура которая строит рисунок A | B по координатам к примеру 10,10. 30,10 и т.д потом вызывается процедура для B&C .. она ведь тоже будет строить рисунок по этим координатам, или рядом? для начала нужно сделать программу для простых формул.. сложные можт и не понадобятся
|
|
| |
Alexander | Дата: Суббота, 03.05.2008, 03:18 | Сообщение # 12 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Ну там ведь всё шаблонно: Чертите N-отрезков: Затем прямоугольник с нужной буквой, объединяющий два верхних входа, а нижние входы продлеваются прямой: Далее сверху, из центра правой стороны прямоугольника проводим линию до точки, которая находится на уровне второго входа на расстоянии X от правой стороны прямоугольника(X может быть равен, например меньшей стороне прямоугольника или её половине). Нижние входы просто продлеваются: И так пока входы не кончатся:
Скажем дружно- нафиг нужно!
Сообщение отредактировал Alexander - Суббота, 03.05.2008, 03:19 |
|
| |
Hunter | Дата: Суббота, 03.05.2008, 03:30 | Сообщение # 13 |
Новичок
Группа: Пользователи
Сообщений: 8
Статус: Offline
| спасибо большое за помощь, буду пробывать чтото делать. а нету подобных исходников? просто посмотреть как ето все заданно програмно.
|
|
| |
Alexander | Дата: Суббота, 03.05.2008, 03:40 | Сообщение # 14 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Увы нет. Сейчас мало свободного времени- пишу две курсовые+усиленно учу физику и немного матан. А в соседней теме лежит задачка от Павла... А завтра ещё на учёбу+вечером шашлык... Если время появится, то напишу вам код для простых схем, тут вопрос только во времени. А может кто-то другой не поленится.
Скажем дружно- нафиг нужно!
|
|
| |
Hunter | Дата: Суббота, 03.05.2008, 08:00 | Сообщение # 15 |
Новичок
Группа: Пользователи
Сообщений: 8
Статус: Offline
| если появится время буду очень благодарен
|
|
| |