diff --git a/AndroidCalculator/Calculator.swift b/AndroidCalculator/Calculator.swift index ea4d9c5..cca7635 100644 --- a/AndroidCalculator/Calculator.swift +++ b/AndroidCalculator/Calculator.swift @@ -20,7 +20,51 @@ class Calculator { return result } } - var result = "" + + var result: String { + get { + if formula.count < 3 { + return "" + } + + var calculatingFormula = formula + if ["+", "-", "×", "÷"].firstIndex(of: calculatingFormula.last!) != nil { + calculatingFormula.removeLast() + } + + while true { + let indexOfMultiplication = calculatingFormula.firstIndex(of: "×") + let indexOfDivision = calculatingFormula.firstIndex(of: "÷") + + if indexOfMultiplication == nil && indexOfDivision == nil { + break + } + if indexOfMultiplication != nil { + if indexOfDivision == nil || indexOfMultiplication! < indexOfDivision! { + let number1 = Double(calculatingFormula[indexOfMultiplication! - 1])! + let number2 = Double(calculatingFormula[indexOfMultiplication! + 1])! + calculatingFormula[indexOfMultiplication! - 1] = String(number1 * number2) + calculatingFormula.remove(at: indexOfMultiplication! + 1) + calculatingFormula.remove(at: indexOfMultiplication!) + continue + } + } + if indexOfDivision != nil { + if indexOfMultiplication == nil || indexOfDivision! < indexOfMultiplication! { + let number1 = Double(calculatingFormula[indexOfDivision! - 1])! + let number2 = Double(calculatingFormula[indexOfDivision! + 1])! + calculatingFormula[indexOfDivision! - 1] = String(number1 / number2) + calculatingFormula.remove(at: indexOfDivision! + 1) + calculatingFormula.remove(at: indexOfDivision!) + continue + } + } + } + + print(calculatingFormula) + return calculatingFormula[0] + } + } func click(_ text: String) { switch text {