Пример #1
0
int main(int argc, char* argv[]) {
  Circuit circ;
  Node *p[10];
  p[0] = circ.addInput("X");
  p[1] = circ.addInput("Y");
  p[2] = circ.addInput("C");
  p[3] = circ.addGate(AND, "D");
  p[4] = circ.addGate(XOR, "E");
  p[5] = circ.addGate(AND, "F");
  p[6] = circ.addGate(XOR, "G");
  p[7] = circ.addGate(OR, "H");
  p[8] = circ.addOutput("Cout");
  p[9] = circ.addOutput("S");

  circ.addWire(p[0], p[3]);
  circ.addWire(p[1], p[3]);
  circ.addWire(p[0], p[4]);
  circ.addWire(p[1], p[4]);
  circ.addWire(p[3], p[7]);
  circ.addWire(p[4], p[5]);
  circ.addWire(p[2], p[5]);
  circ.addWire(p[4], p[6]);
  circ.addWire(p[2], p[6]);
  circ.addWire(p[5], p[7]);
  circ.addWire(p[7], p[8]);
  circ.addWire(p[6], p[9]);

  cout << circ.getInputNames() << "-" << circ.getOutputNames() << endl;
  for(int i=0;i<2;i++)
    {
      for(int j=0;j<2;j++)
	{
	  for(int k=0;k<2;k++)
	    {
	      string input;
	      input=string2int(i);      // here we convert int to string
	      input+=string2int(j);
	      input+=string2int(k);
	      circ.setInputs(input);
	      circ.eval();
	      cout << circ.getInputStates() << "-" << circ.getOutputs() << endl;
	    }
	}
    }
}