public Expression(Expression ex, Expression e2, Operators op) { Ex1 = ex; Ex2 = e2; Oper = op; IsValue = false; }
static void Main(string[] args) { sockAdd.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8001)); //sockSub.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8002)); //sockMult.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8003)); //sockDiv.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8004)); Expression e1 = new Expression(2, 4); Expression e21 = new Expression(1, 3); Expression er1 = new Expression(e1, e21, Operators.Multiply); Expression e2 = new Expression(2, 4); Expression e22 = new Expression(1, 3); Expression er2 = new Expression(e2, e22, Operators.Add); Expression e3 = new Expression(2, 4); Expression e23 = new Expression(1, 3); Expression er3 = new Expression(e3, e23, Operators.Subtract); Expression e4 = new Expression(2, 4); Expression e24 = new Expression(1, 3); Expression er4 = new Expression(e4, e24, Operators.Divide); Stream streamAdd = new NetworkStream(sockAdd); //Stream streamSub = new NetworkStream(sockSub); //Stream streamMult = new NetworkStream(sockMult); //Stream streamDiv = new NetworkStream(sockDiv); DataContractJsonSerializer formatter = new DataContractJsonSerializer(typeof(Expression)); formatter.WriteObject(streamAdd, er1); // streamAdd.Close(); Stream streamAddReceive = new NetworkStream(sockAdd); Expression received = (Expression)formatter.ReadObject(streamAddReceive); // streamAddReceive.Close(); Evaluate(received); //Evaluate(er2); //Evaluate(er3); //Evaluate(er4); }
static void Evaluate(Expression ex) { Expression express=ex; //switch (ex.Oper) //{ // case Operators.Add: // express = Add(ex); // break; // case Operators.Subtract: // express = Subtract(ex); // break; // case Operators.Multiply: // express = Multiply(ex); // break; // case Operators.Divide: // express = Divide(ex); // break; // default: // break; //} Console.WriteLine(express.Numerator+"/"+express.Denominator); Console.ReadKey(); }
static Expression Subtract(Expression ex) { int numerator = (ex.Ex1.Numerator * ex.Ex2.Denominator) - (ex.Ex2.Numerator * ex.Ex1.Denominator); int denominator = ex.Ex1.Denominator * ex.Ex2.Denominator; return new Expression(numerator, denominator); }
static Expression Multiply(Expression ex) { int numerator = ex.Ex1.Numerator * ex.Ex2.Numerator; int denominator = ex.Ex1.Denominator * ex.Ex2.Denominator; return new Expression(numerator, denominator); }
public static Expression Add(Expression ex) { int numerator = (ex.Ex1.Numerator * ex.Ex2.Denominator) + (ex.Ex2.Numerator * ex.Ex1.Denominator); int denominator = ex.Ex1.Denominator * ex.Ex2.Denominator; return new Expression(numerator, denominator); }