Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 15
1

Вычислить значение логического выражения

31.10.2012, 14:32. Показов 913. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста, довести программу до ума.
Задание : вычислить значение вводимого с клавиатур логического выражения с использованием операций &, => и знаков равенства <,>,= .(например, X&Y>Z)

Вот то, что есть на данный момент.
Пока выдаёт ошибку Undeclared domain or misspelling: v


Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
domains
  tree = t(char, ltree)
  lc = char*
  ltree = tree*
  rtree = tree*
 
predicates
 
 nondeterm s(lc,lc,integer,integer,integer)
 nondeterm e(lc,lc,integer,integer,integer)
 nondeterm r(lc,lc,integer,integer,integer)
 nondeterm d(lc,lc,char)
 nondeterm o(lc,lc,char)
 nondeterm q(lc,lc,char)
 nondeterm calc(char,integer,integer,integer)
 nondeterm sTol(string,lc,integer)
 nondeterm getVarVal(string,integer)
 
database-vars
   v(string,integer)
 
 
 
 
 
clauses
 
sTol("",[],0):-!.
sTol(S,L,N):-frontchar(S,C,X),
                 sTol(X,L1,N1),
                 L=[C|L1],
                 N=N1+1.
 
s(Si,S0,M,N,R):-M<=N,
                M1=M+1,
                e(Si,S0,M1,N,R).
 
e(Si,S0,M,N,R):-M<=N,
                M1=M+1,
                e(Si,S1,M1,N,R1),
                o(S1,S2,O),
                e(S2,S0,M1,N,R2),
                calc(O,R1,R2,R);
                M<=N,
                M1=M+1,
                r(Si,S0,M1,N,R).
 
r(Si,S0,M,N,R):-M<=N,
                M1=M+1,
                r(Si,S1,M1,N,R1),
                q(S1,S2,O),
                r(S2,S0,M1,N,R2),
                calc(O,R1,R2,R);
                d(Si,S0,R).
                
calc('<',A,B,R):-A>B,
                 R=0;
                 A<B,
                 R=1.
                  
calc('>',A,B,R):-A>B,
                 R=1;
                 A<B,
                 R=0.
                 
calc('=',A,B,R):-A=B,
                 R=1;
                 R=0.
                 
calc('&',A,B,R):-A=1,B=1,R=1;
                 A=0,B=1,R=0;
                 A=1,B=0,R=0,
                 A=0,B=0,R=0.
                 
calc('-',A,B,R):-A=0,B=0,R=1;
                 A=0,B=1,R=1,
                 A=1,B=0,R=0;
                 A=1,B=1,R=1.
                 
% предикат записи в БД
getVarVal(N,V):-v(N,V),!;
                write("Vvedite Zna4enie"),
                write(N),
                readint(V),
                assert(vars,v(N,V)).
                 
                  
                
d(['X'|S],S,'X').
d(['Y'|S],S,'Y').
d(['Z'|S],S,'Z').
 
q(['<'|S],S,'<').
q(['>'|S],S,'>').
q(['='|S],S,'=').
 
o(['&'|S],S,'&').
o(['-'|S],S,'-').
 
 goal           
                 getVarVal(N,V),
                 write("Vvedite sroku: "),
                 readLn(S),
                 sTol(S,L,N),
                 s(L,[],0,N,Res),
                 write(Res);
                 write("Syntax Error").
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2012, 14:32
Ответы с готовыми решениями:

Вычислить значение выражения с двойным факториалом
Вычислить значение выражения y(N), N-целое число. y(N) = \sum_{i=1}^{n}1/i!!

Вычислить значение выражения. Где ошибка?
Нужно вычислить значение выражения, используя SWI Prolog. y=exp(x)*sin(x)+5*ln(x) Вот что...

Вычислить значение выражения для любых целых Х и У
Вычислить значение выражения для любых целых Х и У, введенных с клавиатуры: v=|(x^x/y)- кубический...

Как вывести таблицу истинности для логического выражения на SWI-Prolog?
Или почему этот код падает с ошибкой &quot;Sandbox restriction! Could not derive which predicate may be...

0
31.10.2012, 14:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2012, 14:32
Помогаю со студенческими работами здесь

Вычислить значение логического выражения
Упражнение 1: При A=true, B=false, C=false вычислить значение логического выражения: • (((not( A...

Вычислить значение логического выражения
Помогите пожалуйста разобраться с задачей) Надо: Вычислить значение логического выражения при...

Вычислить значение логического выражения
Вычислить значение логического выражения при следующих значениях логических величин X,Y и Z:X =...

Вычислить значение логического выражения
1)написать программу, используя оператор условного перехода скриншот nomer 1 2) Вычислить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru