Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Pasos:
- 0: Borrar Espacios en blanco (trim)
- 1: IsNumber(string)
- 2: IsAddition(string)
- 3: IsSubstraction(string)
- 4: IsMultiplication(string)
- 5: IsDivision(string)
- "1"
- Number: 1
- ------------------------------------
- "1 + 2"
- Addition:
- L: 1 (Number)
- R: 2 (Number)
- ------------------------------------
- "1 + 2 * 3"
- Addition:
- L: 1 (Number)
- R: 2 * 3 (Multiplication)
- Multiplication
- L: 2 (Number)
- R: 3 (Number)
- V: 6
- ------------------------------------
- "1 + 2 * 3 - 4"
- Addition:
- L: 1 (Number)
- R: 2 * 3 - 4 (Substraction) (2)
- V: 3
- Substraction
- L: 2 * 3 (Multiplication) (6)
- R: 4 (Number) (4)
- V: 2
- Multiplication:
- L: 2 (Number)
- R: 3 (Number)
- V: 6
- ------------------------------------
- "2 + 2 * 3 - 4/2"
- "2+2*3-4/2"
- Addition:
- L: 2 (Number)
- R: 2*3-4/2 (Substraction) (4)
- V: 6
- Substraction:
- L: 2*3 (Multiplication) (6)
- R: 4/2 (Division) (2)
- V: 4
- Multiplication
- L: 2 (Number)
- R: 3 (Number)
- V: 6
- Division
- L: 4 (Number)
- R: 2 (Number)
- V: 2
- //pseudo codigo
- Expression e = Expression.fromString("2 + 2 * 3 - 4/2");
- //2+2*3-4/2
- split("2+2*3-4/2", '+') => ["2", "2*3-4/2"];
- split("2*3-4/2", '-') => ["2*3", "4/2"];
- split("4/2", '/') => ["4", "2"];
- expression = "2 + 2 * 3 - 4/2"
- Expression* static fromString(string expression) {
- expression = trim(expression); //2+2*3-4/2
- if(IsNumber(expression)) {
- //detectar hasta donde llega el numero
- //parse string to number
- int i = itoa(expression);
- return new Number(i);
- } else if(IsAddition(expression)) {
- //partir string en operando izquierdo y derecho
- string operandos [] = split(expression, '+'); // ["2", "2*3-4/2"]
- string izquierdo = operandos[0];
- string derecho = operandos[1];
- return Addition(Expression.fromString(izquierdo), Expression.fromString(derecho));
- } else if (IsSubstraction(expression)) {
- //partir string en operando izquierdo y derecho
- // expression = 2*3-4/2
- string operandos [] = split(expression, '-'); // ["2*3", "4/2"]
- string izquierdo = operandos[0];
- string derecho = operandos[1];
- return Substraction(Expression.fromString(izquierdo), Expression.fromString(derecho));
- } else if (IsMultiplication(expression)) {
- //partir string en operando izquierdo y derecho
- // expression = 2*3
- string operandos [] = split(expression, '*'); // ["2", "3"]
- string izquierdo = operandos[0];
- string derecho = operandos[1];
- return Multiplication(Expression.fromString(izquierdo), Expression.fromString(derecho));
- } else if (IsDivision(expression)) {
- //partir string en operando izquierdo y derecho
- // expression = 4/2
- string operandos [] = split(expression, '/'); // ["4", "2"]
- string izquierdo = operandos[0];
- string derecho = operandos[1];
- return Multiplication(Expression.fromString(izquierdo), Expression.fromString(derecho));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement