Пятница, 24.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Seqular, Pavel  

Функциональная логическая схема
HunterДата: Пятница, 02.05.2008, 19:39 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 8
Репутация: 0
Замечания: 0%
Статус: Offline
Добрый день. Подскажите пожалуйста как решить следующую задачу :

" Нужно написать программу которая строит функциональную логическую схему за структурной формулой. "

Можете пожалуйста объяснить как это должно выглядеть? С чего начать? Я просто не представляю как ето должно выглядеть, возможно где-то есть похожие примеры.

насколько я понял задание мне нужно написать програму которая будет рисовать коньюкцию, дизьюкцию, вообщем елементарные логические операции.
например вводиш A&B&C а программа должо рисовать (с помощью graf) чтото типа етого :
http://infologos.narod.ru/234.htm

заранее большое спасибо за помощь

 
SeqularДата: Пятница, 02.05.2008, 20:45 | Сообщение # 2
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Hunter, Задачка, мягко скажем, непростая. Даже не знаю, с чего начать решение.
Собственно, не важно на самом деле, через GRAPH или не через GRAPH решать. Важно разобраться в принципе.И вот что-то не очень уверен, что программа должна рисовать элементарные логические операции. Было бы слишком просто. Может понадобится рисовать и более сложные.

А в простом варианте, думаю, нужно будет разделить строку-выражение по приоритетам. Затем в порядке приоритета вывести на экран, рисуя фигуры. Тут нужно уже идею развивать о том, какие фигуры рисовать. Соответственно, если дизьюнкция - то параллельные ключи. Если коньюнкция - то последовательные. А если инверсия, что рисовать можно? :-) Я не знаю даже. Треугольник?


Поддерживаю также проект сообщество молодых сисадминов
 
SeqularДата: Пятница, 02.05.2008, 20:48 | Сообщение # 3
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Если рисовать для элементарных операций и только для тех, что на том сайте, что ты ссылку дал, то лучше всего сделать так:

Заготовить спрайты-кирпичики, либо забить их в процедуры. Положение кирпичика запоминать. И схему рисовать последовательно. Ну а остальное - разложение по приоритетам, рисование соответствующих моделей.


Поддерживаю также проект сообщество молодых сисадминов
 
AlexanderДата: Пятница, 02.05.2008, 20:53 | Сообщение # 4
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote
А если инверсия, что рисовать можно? :-)

not
Это похоже курсовая, тут думать много придётся.


Скажем дружно- нафиг нужно!

Сообщение отредактировал Alexander - Суббота, 03.05.2008, 00:26
 
HunterДата: Пятница, 02.05.2008, 21:53 | Сообщение # 5
Новичок
Группа: Пользователи
Сообщений: 8
Репутация: 0
Замечания: 0%
Статус: Offline
тоесть написать 3 процедуры которые будут рисовать инвертор дизьюнктор и коньюнктор. потом зделать анализ формулы. в зависимости от нее вызывать определеные процедуры?

к примеру V - дизьюнктор, & - коньюнктор ! - инвертор
c формулой A V B или A & B будет рабоать нормально.
Но как зделать чтобы оно выводило рисунок а рядом с ним другой, в случаее формулы A V B & C

 
PavelДата: Суббота, 03.05.2008, 00:44 | Сообщение # 6
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Ну так тут и надо будет подумать!
Quote (Hunter)
в случаее формулы A V B & C

Пока мыслей нет, но думаю это все решабельно! У нас уже ночь. Я спать. Завтра обдумаю. cool
 
PavelДата: Суббота, 03.05.2008, 00:56 | Сообщение # 7
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Кстати. От перестановки членов дизъюнкции/конъ.. результат не меняется. Так что тут надо бы еще оговориться, можно ли преобразовывать формулы или нет?
 
AlexanderДата: Суббота, 03.05.2008, 01:39 | Сообщение # 8
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: 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
Репутация: 0
Замечания: 0%
Статус: Offline
выключатели наверно не подойдут. нужно строить из логических елментов.
преобразовывать формулы.. ну нет наверное.. какую ввел такуюи нарисовало.

если в отедльных процедрах написать рисование схемы с определенными координатами, то если формула будет из 3х членов то рисунки будут налажоваться? или нет?

 
AlexanderДата: Суббота, 03.05.2008, 02:24 | Сообщение # 10
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote
если формула будет из 3х членов то рисунки будут налажоваться?

Что значит "налажоваться"?
Простые схемы типа A&b&C|D&E&Z строить легко, проблемы будут со схемами типа: (A & cool | (C | D & !B), тут вы должны будете её преобразовать в простую либо строить блоками.


Скажем дружно- нафиг нужно!
 
HunterДата: Суббота, 03.05.2008, 02:56 | Сообщение # 11
Новичок
Группа: Пользователи
Сообщений: 8
Репутация: 0
Замечания: 0%
Статус: Offline
Вот смотрите: формула A | B & C
вызывается процедура которая строит рисунок A | B по координатам к примеру 10,10. 30,10 и т.д
потом вызывается процедура для B&C .. она ведь тоже будет строить рисунок по этим координатам, или рядом?

для начала нужно сделать программу для простых формул.. сложные можт и не понадобятся

 
AlexanderДата: Суббота, 03.05.2008, 03:18 | Сообщение # 12
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Ну там ведь всё шаблонно:
Чертите N-отрезков:

Затем прямоугольник с нужной буквой, объединяющий два верхних входа, а нижние входы продлеваются прямой:

Далее сверху, из центра правой стороны прямоугольника проводим линию до точки, которая находится на уровне второго входа на расстоянии X от правой стороны прямоугольника(X может быть равен, например меньшей стороне прямоугольника или её половине). Нижние входы просто продлеваются:

И так пока входы не кончатся:


Скажем дружно- нафиг нужно!

Сообщение отредактировал Alexander - Суббота, 03.05.2008, 03:19
 
HunterДата: Суббота, 03.05.2008, 03:30 | Сообщение # 13
Новичок
Группа: Пользователи
Сообщений: 8
Репутация: 0
Замечания: 0%
Статус: Offline
спасибо большое за помощь, буду пробывать чтото делать.
а нету подобных исходников? просто посмотреть как ето все заданно програмно.
 
AlexanderДата: Суббота, 03.05.2008, 03:40 | Сообщение # 14
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Увы нет. Сейчас мало свободного времени- пишу две курсовые+усиленно учу физику и немного матан. А в соседней теме лежит задачка от Павла... А завтра ещё на учёбу+вечером шашлык... Если время появится, то напишу вам код для простых схем, тут вопрос только во времени. А может кто-то другой не поленится.

Скажем дружно- нафиг нужно!
 
HunterДата: Суббота, 03.05.2008, 08:00 | Сообщение # 15
Новичок
Группа: Пользователи
Сообщений: 8
Репутация: 0
Замечания: 0%
Статус: Offline
если появится время буду очень благодарен
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;