Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Логический калькулятор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Правильно ли написана задача http://www.cyberforum.ru/cpp-beginners/thread1061515.html
здравствуйте помогите решить задачу на с++ я вроде решил но не пойму где ошибся. решение: #include <iostream> using namespace std; void main() { double S,C,X; int i,N,Z,F;
C++ Посчитать разность максимального и минимального чисел для данного подмножества Дано 5 чисел. Посчитать разность максимального и минимального чисел для данного подмножества. Результат вывести на экран http://www.cyberforum.ru/cpp-beginners/thread1061493.html
C++ Поиск трех ближайших точек к данной
Есть массив точек, заданных координатами х и y. Нужно найти три ближайшие точки к данной, чтобы данная точка была в треугольнике, вершинами которого являются искомые точки. Меня интересует самый...
Определить, содержит ли текст (помимо букв) только одну цифру, числовое значение которой равно длине текста C++
привет. помогите решить задачу по с++. очень нужно. я ничего с ней не смог сделать. вот условие: В заданный непустой текст входят только цифры и буквы. Определить, удовлетворяет ли он следующему...
C++ Посоветуйте литературу или статьи по правильному составлению архитектуры кода программ http://www.cyberforum.ru/cpp-beginners/thread1061450.html
Здравствуйте программисты. Посоветуйте пожалуйста литературу или статьи по правильному составлению архитектуры кода программ. А то просто когда я начинал писать что-то более менее большое в один...
C++ Применимы ли учебники по C к C++? Насколько различен их синтаксис? Всем привет. Дали в универе литературу к экзамену по языку C, а экзаменационные вопросы по языку С++. Применимы ли учебники по C к C++, у них синтаксис одинаковый? Буду благодарен за помощь. подробнее

Показать сообщение отдельно
Monsieurcharger
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 5

Логический калькулятор - C++

01.01.2014, 20:40. Просмотров 1189. Ответов 1
Метки (Все метки)

Написал калькулятор логических выражений, но не могу добавить функцию приоритета, со скобками все работает замечательно, но без них действия | и & имеют одинаковый приоритет, кто может помочь с написанием данной функции?

Добавлено через 1 минуту
C++
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
string delete_spaces(string str)
{
string s="";
for (unsigned i=0; i<str.size(); ++i)
{
if (str[i]!=' ' && str[i]!='\t')
s+=str[i];
}
return s;
}
 
bool check(string str)
{
string s=delete_spaces(str);
 
if (s.size()==1 && s=="0")
return 0;
if (s.size()==1 && s=="1")
return 1;
if ((s.size()==2 && ((s[0]=='!')&&(s[1]=='0'))))
return 1;
if ((s.size()==2 && ((s[0]=='!')&&(s[1]=='1'))))
return 0;
int q=0;
bool det=false;
 
string s1, s2;
 
for (unsigned i=s.size()-1; i>=0; —i)
{
 
 
if (i==0 && (s[i]=='(') && q==1)
{
s.assign(s, 1, s.size()-2);
i=s.size()-1;
q=0;
}
if(i==0 && s[i]=='!' && q==0)
det=true;
if(det==true){
 
s.assign(s, 2, s.size()-3);
i=s.size()-2;
//return(!check(s1)&&!check(s2));
}
if (s[i]==')')
q+=1;
if (s[i]=='(')
q-=1;
 
if (q==0 && s[i]=='|')
{
s1.assign(s, 0, i);
s2.assign(s, i+1, s.size()-i-1);
 
if(s1.size()>2) return check(s1);
if(s2.size()>2) return check(s2);
 
if((s1[0]=='!')&&(s2[0]=='!'))
{if(s1.size()>2) return check(s1);
if(s2.size()>2) return check(s2);
if(s1[1]=='1')
s1="0";
else
s1="1";
if(s2[1]=='1')
s2="0";
else
s2="1";
}
 
if(s1[0]=='!')
{if(s1.size()>2) return check(s1);
if(s1[1]=='1')
s1="0";
else
s1="1";
}
 
if(s2[0]=='!')
{
if(s2.size()>2) return check(s2);
if(s2[1]=='1')
s2="0";
else
s2="1";
}
if(det==true) return(!(check(s1)||check(s2)));
return check(s1)||check(s2);
 
}
if (q==0 && s[i]=='&')
{
s1.assign(s, 0, i);
s2.assign(s, i+1, s.size()-i-1);
 
if((s1[0]=='!')&&(s2[0]=='!'))
{if(s1.size()>2) return check(s1);
if(s2.size()>2) return check(s2);
if(s1[1]=='1')
s1="0";
else
s1="1";
if(s2[1]=='1')
s2="0";
else
s2="1";
}
 
if(s1[0]=='!')
{if(s1.size()>2) return check(s1);
if(s1[1]=='1')
s1="0";
else
s1="1";
}
 
if(s2[0]=='!')
{
if(s2.size()>2) return check(s2);
if(s2[1]=='1')
s2="0";
else
s2="1";
}
if(det==true) return(!(check(s1)&&check(s2)));
return check(s1)&&check(s2);
}
/*if (q==0 && s[i]=='!')
{
if(s[i+1]==1)
{ 
s[i]=' ';
s[i+1]=0;
}
else {s[i+1]==1; s[i]=' ';}
s=delete_spaces(str);
}*/
}
 
}
 
int main()
{
int qwe=-1;
string s;
getline(cin,s);
qwe=check(s);
cout«check(s);
scanf("%d",qwe);
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru