Facebook
From RafaƂ Rajtar, 3 Years ago, written in Java.
Embed
Download Paste or View Raw
Hits: 115
  1. public class Func {
  2.  
  3.         enum OP_TYPE{
  4.                 VALUE,
  5.                 ADDITION,
  6.                 SUBTRACTION,
  7.                 MULTIPLICATION,
  8.                 DIVISION
  9.         }
  10.        
  11.        
  12.         OP_TYPE op;
  13.         Func left;
  14.         Func right;
  15.         float value;
  16.  
  17.         public Func(OP_TYPE op, Func left, Func right){
  18.                 this.op = op;
  19.                 this.left = left;
  20.                 this.right = right;
  21.         }
  22.        
  23.         public Func(float value){
  24.                 this.op = OP_TYPE.VALUE;
  25.                 this.value = value;
  26.         }
  27.        
  28.         public static Func createFunc(String formula){
  29.                 Func func = null;
  30.                
  31.                 for(int i = formula.length() - 1; i > 0; i--){
  32.                         if(formula.charAt(i) == '+'){
  33.                                 System.out.println("Create addition: " + formula);
  34.                                 String a = formula.substring(0, i); //5
  35.                                 String b = formula.substring(i + 1, formula.length());  //4
  36.                                 func = new Func(Func.OP_TYPE.ADDITION, a, b);
  37.                                 return func;
  38.                         } else if(formula.charAt(i) == '-'){
  39.                                 System.out.println("Create subtraction: " + formula);
  40.                                 String a = formula.substring(0, i); //5
  41.                                 String b = formula.substring(i + 1, formula.length());  //4
  42.                                 func = new Func(OP_TYPE.SUBTRACTION, a, b);
  43.                                 return func;
  44.                         }
  45.                 }
  46.                 System.out.println("Create value: " + formula);
  47.                 float value = Float.parseFloat(formula);
  48.                 func = new Func(value);
  49.  
  50.                 return func;
  51.         }
  52.         public void printONP(){
  53.                 if(op == OP_TYPE.VALUE){
  54.                         System.out.print(value);
  55.                 }else {
  56.                         System.out.print(opToText());
  57.                         left.printONP();
  58.                         right.printONP();
  59.                 }
  60.         }
  61.        
  62.         String opToText(){
  63.                 switch(op){
  64.                         case ADDITION:
  65.                                 return "+";
  66.                         case SUBTRACTION:
  67.                                 return "-";
  68.                 }
  69.                 return "?";
  70.         }
  71.        
  72.         public Func(OP_TYPE op, String left, String right){
  73.                 this.op = op;
  74.                 this.left = createFunc(left);
  75.                 this.right = createFunc(right);
  76.         }
  77.        
  78.         public float calc(){
  79.                 if(op == OP_TYPE.ADDITION){
  80.                         return left.calc() + right.calc();
  81.                 }else if(op == OP_TYPE.SUBTRACTION){
  82.                         return left.calc() - right.calc();
  83.                 }else if(op == OP_TYPE.VALUE){
  84.                         return value;
  85.                 }
  86.                 return 0.0f;
  87.         }
  88. }
  89.