Pagini recente » Cod sursa (job #2778539) | Cod sursa (job #2796038) | Cod sursa (job #1341597) | Cod sursa (job #1125243) | Cod sursa (job #878954)
Cod sursa(job #878954)
#include <fstream>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
const int sigma= 26;
const int nmax= 100, lmax= 1000;
char v[lmax+2];
char ch[nmax+2];
bool b[sigma];
int m, ind;
void inc(int x){
for (ind+= x; /*ind<m&& */v[ind]==' '; ++ind){
}
}
inline bool op_or(){
if (ind+1<m&& v[ind]=='O'&& v[ind+1]=='R'){
inc(2);
return 1;
}else{
return 0;
}
}
inline bool op_and(){
printf("%d %d\n", ind, m);
if (ind+2<m&& v[ind]=='A'&& v[ind+1]=='N'/*&& v[ind+2]=='D'*/){
inc(3);
printf("*****");
return 1;
}else{
return 0;
}
}
inline bool op_not(){
if (/*ind+2<m&& */v[ind]=='N'&& v[ind+1]=='O'/*&& v[ind+2]=='T'*/){
inc(3);
return 1;
}else{
return 0;
}
}
inline bool op_true(){
if (/*ind+3<m&& */v[ind]=='T'&& v[ind+1]=='R'/*&&
v[ind+2]=='U'&& v[ind+3]=='E'*/){
inc(4);
return 1;
}else{
return 0;
}
}
inline bool op_false(){
if (/*ind+4<m&& */v[ind]=='F'&& v[ind+1]=='A'/*&&
v[ind+2]=='L'&& v[ind+3]=='S'&& v[ind+4]=='E'*/){
inc(5);
return 1;
}else{
return 0;
}
}
bool term(), expr_and(), expr_or();
bool term(){
printf("222\n");
if (v[ind]=='('){
inc(1);
bool x= expr_or();
printf("2->-1");
inc(1);
return x;
}else if (op_not()){
bool x= !term();
printf("2->-2");
return x;
}else if (op_true()){
return 1;
printf("2->-3");
}else if (op_false()){
printf("2->-4");
return 0;
}else{
bool x= b[v[ind]-'A'];
inc(1);
printf("2->%d\n", x);
return x;
}
}
bool expr_and(){
printf("&&&\n");
bool x= term();
while (op_and()){
printf("&\n");
x&= term();
}
printf("1->%d\n", x);
return x;
}
bool expr_or(){
printf("|||\n");
bool x= expr_and();
while (op_or()){
printf("|\n");
x|= expr_and();
}
printf("0->%d\n", x);
return x;
}
int main(){
fin.getline(v, lmax+2);
int n;
fin>>n;
fin.getline(ch, 2);
fin.getline(ch, nmax+2);
for (m= 0; m<=lmax&& v[m]!=0; ++m){
}
for (int i= 0; i<n; ++i){
b[ch[i]-'A']^= 1;
ind= 0;
fout<<expr_or();
printf("\n");
}
fout<<"\n";
return 0;
}