Как вызвать BUFFER::set(0) в output() класса XNOR?
Как вызвать BUFFER::set(0) в выводе()
из класса XNOR? Исключающее или буфер наследует класс как защищенных где установить() общественная или и исключающее ИЛИ исключающее ИЛИ наследуемый класс?
Что я уже пробовал:
#include<iostream> #include<vector> using namespace std; /*void operator =(vector<bool>x,vector<bool>y) { int i=0; while(i<y.size()) { x.push_back(y[i]); i++; } }*/ class gate { public: bool output(); }; class BUFFER: public gate { bool x; public: void set(bool data){ x=data;} bool output() { return x; } }; class OR: public gate { vector<bool>v; public: void set(vector<bool> data){ copy(data.begin(),data.end(),back_inserter(v));} bool output() { while(v.size()>1) { v.push_back(v[0]+v[1]); v.erase(v.begin(),v.begin()+2); } return v[0]; } }; class AND: public gate { vector<bool>v; public: void set(vector<bool> data){ copy(data.begin(),data.end(),back_inserter(v));} bool output() { while(v.size()>1) { v.push_back(v[0]*v[1]); v.erase(v.begin(),v.begin()+2); } return v[0]; } }; class NOT: public gate { bool x; public: void set(bool data){ x=data; } bool output() { return 1-x; } }; class NAND: public gate, protected NOT,AND { vector<bool> v; public: void set(vector<bool> data){ copy(data.begin(),data.end(),back_inserter(v));} bool output() { AND::set(v); NOT::set(AND::output()); return (NOT::output()); } }; class NOR: public gate, protected OR,NOT { vector<bool>v; public: void set(vector<bool> data){ copy(data.begin(),data.end(),back_inserter(v));} bool output() { OR::set(v); NOT::set(OR::output()); return NOT::output(); } }; class XOR: public gate, protected NOT,AND,OR,BUFFER { vector<bool> v; public: void set(vector<bool> data){ copy(data.begin(),data.end(),back_inserter(v));} bool output() { while(v.size()>1) { vector<bool> d,g,c; d.push_back(v[0]);cout<<"v[0] \t"<<v[0]; NOT::set(v[1]);cout<<"\nv[1] \t"<<v[1]; d.push_back(NOT::output());cout<<"\nNOT::output() \t"<<NOT::output()<<"\n"; for(int i=0;i<d.size();i++) cout<<d[i]<<"\t"; AND::set(d); //d.clear(); c.push_back(AND::output());cout<<"\nAND::output() \t"<<AND::output(); // cout<<"1 and"<<AND::output(); g.push_back(v[1]);cout<<"\nv[1] \t"<<v[1]; NOT::set(v[0]);cout<<"\nv[0] \t"<<v[0]; g.push_back(NOT::output());cout<<"\nNOT::output() \t"<<NOT::output()<<"\n"; for(int i=0;i<g.size();i++) cout<<g[i]<<"\t"; AND::set(g); c.push_back(AND::output());cout<<"\nAND::output() \t"<<AND::output()<<"\n"; for(int i=0;i<c.size();i++) cout<<c[i]<<"\t"; // cout<<"\t2 and"<<AND::output(); OR::set(c); cout<<"\nOR::output"<<OR::output(); v.push_back(OR::output()); v.erase(v.begin(), v.begin()+2); } return v[0]; } }; class XNOR: public gate, protected XOR//, NOT { vector<bool> v; public: void set(vector<bool> data){ copy(data.begin(),data.end(),back_inserter(v));} bool output() { BUFFER::set(0); //XOR::set(v); //XOR:output(); //NOT::set(XOR::output()); return 0;//NOT::output(); } }; int main() { int a; bool x; vector<bool> v; while(1) { cin>>a; for(int i=0;i<a;i++) { cin>>x; v.push_back(x); } XOR d; d.set(v); cout<<"OUTPUT \t"<<d.output(); } return 0; }
Richard MacCutchan
Точно так же, как вы назвали бы его из любого другого места.