Форум сайта python.su
И так мне нужно задать такие операторы
отрицание - (&)
коньюнкция - (>)
дизюнкция - (<)
еквиваленция - (=)
импликация - (_)
так чтобы они могли состыковатся с буквами только таким способом:
Если у нас буквы X,Y
(&X), (X>Y), (X<Y),(X=Y),(X_Y).
Также чтоб могли состыковатся теперь эти скобки между собой( таким же способом), только представьте что эти скобки это наши буквы.И скобки по краям тоже обязательны.
Но чтоб если гдето не хваало скобки,
&X), или (&X)>Y)
или операторы состыковывались между собой например вот так
(X_=Y),
ещё оператор & , не может соеденять 2 буквы, он работает только с 1 , тоесть выражение вида:
(X&Y) должно выдать ошибку.
А выражение вида :
(X>(&Y)) уже должно пройти без ошибок.
Тоесть,
1 что надо сделать……., это написать программу которая определяет что кол-во открывшихся = колву закр. скобок( но это легко, и давно сделано)
2 что надо сделать……., это чтоб программа выдавала ошибку при соеденении 2и более операторов например (X>=Y)( вот это я уже не знаю как реализовать)
3 что надо сделать………. Это чтоб Оператор & выдавал ошибку если он состыкует 2 переменные.
По сути дела мне надо определить является ли заданая функция ФАВ или нет, если вы не поняли моего обьяснения, то вот можно скачать методичку, где более подробно описывается что можно делать а что нельзя http://fmponmu.narod.ru/metodichki/odm.exe
Офлайн
Alex_KutsanУменя Linux, как я могу прочитать odm.exe?
http://fmponmu.narod.ru/metodichki/odm.exe
Офлайн
Что то я ничего не понял :(, хотя и пытался.
> Уменя Linux, как я могу прочитать odm.exe?
Это обычный архив его wine распаковать может, Но всё равно вникать в Основы дискретной математики у меня нет никакого желания.
Офлайн
Кстати. Хочу построить самолёт. Он должен уметь взлетать и совершать посадку. Хочу в салоне множество датчиков. Обязательно нужен автопилот. Ещё будет клёво, если там будет система тушения пожара.
Вот методичка по сопромату - http://sopromat.org
Если вы не поняли моего обьяснения, убейтесь, тупые, ленивые твари.
Итак, нужно:
1) Найти много железа. (я знаю где взять)
2) Написать программу для автопилота (это я не представляю как сделать, напишите ктонить)
3) Сделать чертёж самолёта, чтобы он не развалился.
Офлайн
Я уже придумал как это сделать( прошу прощения конечно что так нагло пытался обучить ОДМ, но про самолёт очень смешно:)) конечно осталось только ооочень много писанины.
По ходу выполнения столкнулся с 1 проблемой:
как в операторе цикла wile пропустить первый случай совпадения?
просто мне нужно сделать параметры возможности для всех открывающихся скобок КРОМЕ ПЕРВОЙ!!!, но цикл while захватывает 1 тоже, что делать? как сделать так чтоб цикл while пропустил 1 символ строки
Офлайн
Alex_KutsanНачать считать со второго?
как сделать так чтоб цикл while пропустил 1 символ строки
Офлайн
Alex_KutsanНапример завести переменную, значение которой равно нулю. При совпадении проверить значение переменной. Если нулевая, то присвоить единицу и идти дальше. Если не нулевая, то…
как в операторе цикла wile пропустить первый случай совпадения?
Офлайн
О боже мой, какой же я идит, как я не додумался…. Спасибо огромное.
Но меня остаановила новая проблема. Вот мой код( его не нужно разбирать, там ничего важного):
n= "(((!x)>x)_((!y)=(!x)))"
ch=["x","y"]
tf = False
for simv in n:
for oprt in opr:
if simv==oprt:
tf=True
if tf==False:
print "NO"
tf = False
for simv in n:
if simv == "(":
tf = True
if tf==False:
print "NO"
brackets = 0
for letter in n:
if letter == '(':
brackets += 1
elif letter == ')':
brackets -= 1
if brackets != 0:
print "NO"
for simv in n:
for chya in ch:
if simv == chya:
t=0
while t<len(n):
if n[t]==simv:
q=t
break
t=t+1
if n[q+1]== "(" or n[q+1]=="&":
tf = False
if n[q-1]==")":
tf = False
if tf = False:
print "NO"
Офлайн
Самым красивым решением будет изменить архитектуру так, чтобы “NO” возвращала некая функция при нарушении некоторых условий. Тогда проблема отпадёт сама собой.
А в этом коде можно понатыкать слово break после каждого print “NO”.
Хотя нет. break тут не будет работать. Я думаю, имеет смысл изменить архитектуру.
Отредактировано (Март 26, 2010 21:29:23)
Офлайн
О боже мой, не пугайте меня изменением архитектуры, я так над этой мучался, да и вобще я уже 3 раза менял архитектуру и всё заново переписывал.
Или скажите хоябы как полегче её изменить, смысл ведь прост, везде где у меня “print ”NO“ нужно чтобы если так случилось что эты фраза высветится( она появляется только при определёных условиях) по нажатию Энтер программа просто вырубалась. Неужели это так сложно вырубить программу в любом месте?
Если чесно я ещё немного не понял эту фразуЖ
”Самым красивым решением будет изменить архитектуру так, чтобы “NO” возвращала некая функция при нарушении некоторых условий. Тогда проблема отпадёт сама собой."
Офлайн