Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. // Pasos:
  2. 0: Borrar Espacios en blanco (trim)
  3. 1: IsNumber(string)
  4. 2: IsAddition(string)
  5. 3: IsSubstraction(string)
  6. 4: IsMultiplication(string)
  7. 5: IsDivision(string)
  8.  
  9. "1"
  10. Number: 1
  11.  
  12. ------------------------------------
  13. "1 + 2"
  14.  
  15. Addition:
  16. L: 1 (Number)
  17. R: 2 (Number)
  18.  
  19. ------------------------------------
  20. "1 + 2 * 3"
  21.  
  22. Addition:
  23. L: 1 (Number)
  24. R: 2 * 3 (Multiplication)
  25.  
  26. Multiplication
  27. L: 2 (Number)
  28. R: 3 (Number)
  29. V: 6
  30.  
  31. ------------------------------------
  32. "1 + 2 * 3 - 4"
  33.  
  34. Addition:
  35. L: 1 (Number)
  36. R: 2 * 3 - 4 (Substraction) (2)
  37. V: 3
  38. Substraction
  39. L: 2 * 3 (Multiplication) (6)
  40. R: 4 (Number) (4)
  41. V: 2
  42.  
  43. Multiplication:
  44. L: 2 (Number)
  45. R: 3 (Number)
  46. V: 6
  47.  
  48. ------------------------------------
  49. "2 + 2 * 3 - 4/2"
  50. "2+2*3-4/2"
  51.  
  52. Addition:
  53. L: 2 (Number)
  54. R: 2*3-4/2 (Substraction) (4)
  55. V: 6
  56.  
  57. Substraction:
  58. L: 2*3 (Multiplication) (6)
  59. R: 4/2 (Division) (2)
  60. V: 4
  61.  
  62. Multiplication
  63. L: 2 (Number)
  64. R: 3 (Number)
  65. V: 6
  66.  
  67. Division
  68. L: 4 (Number)
  69. R: 2 (Number)
  70. V: 2
  71.  
  72. //pseudo codigo
  73. Expression e = Expression.fromString("2 + 2 * 3 - 4/2");
  74.  
  75. //2+2*3-4/2
  76. split("2+2*3-4/2", '+') => ["2", "2*3-4/2"];
  77. split("2*3-4/2", '-') => ["2*3", "4/2"];
  78. split("4/2", '/') => ["4", "2"];
  79.  
  80. expression = "2 + 2 * 3 - 4/2"
  81. Expression* static fromString(string expression) {
  82. expression = trim(expression); //2+2*3-4/2
  83.  
  84. if(IsNumber(expression)) {
  85. //detectar hasta donde llega el numero
  86. //parse string to number
  87. int i = itoa(expression);
  88. return new Number(i);
  89. } else if(IsAddition(expression)) {
  90. //partir string en operando izquierdo y derecho
  91. string operandos [] = split(expression, '+'); // ["2", "2*3-4/2"]
  92. string izquierdo = operandos[0];
  93. string derecho = operandos[1];
  94.  
  95. return Addition(Expression.fromString(izquierdo), Expression.fromString(derecho));
  96. } else if (IsSubstraction(expression)) {
  97. //partir string en operando izquierdo y derecho
  98. // expression = 2*3-4/2
  99. string operandos [] = split(expression, '-'); // ["2*3", "4/2"]
  100. string izquierdo = operandos[0];
  101. string derecho = operandos[1];
  102.  
  103. return Substraction(Expression.fromString(izquierdo), Expression.fromString(derecho));
  104. } else if (IsMultiplication(expression)) {
  105. //partir string en operando izquierdo y derecho
  106. // expression = 2*3
  107. string operandos [] = split(expression, '*'); // ["2", "3"]
  108. string izquierdo = operandos[0];
  109. string derecho = operandos[1];
  110.  
  111. return Multiplication(Expression.fromString(izquierdo), Expression.fromString(derecho));
  112.  
  113. } else if (IsDivision(expression)) {
  114. //partir string en operando izquierdo y derecho
  115. // expression = 4/2
  116. string operandos [] = split(expression, '/'); // ["4", "2"]
  117. string izquierdo = operandos[0];
  118. string derecho = operandos[1];
  119.  
  120. return Multiplication(Expression.fromString(izquierdo), Expression.fromString(derecho));
  121. }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement