Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // ViewController.swift
- // Calculator
- //
- // Created by Matan Dahan on 24/01/2018.
- // Copyright © 2018 Matan Dahan. All rights reserved.
- //
- import UIKit
- class ViewController: UIViewController {
- @IBOutlet weak var resultLabel: UILabel!
- var currentString : String = ""
- var nextNumber : String = ""
- var firstNum : Double = 0
- var firstNumInteger : Int = 0
- var secondNum : Double = 0
- var secondNumInteger : Int = 0
- var counter : Int = 0
- var checkAction : Check = Check.addtion
- var lastKnownAction : Check = Check.addtion
- var result : Double = 0
- var resultInteger : Int = 0
- var isDecimal : Bool = true
- var checkNumber : Double = 0
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do any additional setup after loading the view, typically from a nib.
- restartCalculator()
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- // Dispose of any resources that can be recreated.
- }
- @IBAction func buttonPressed(_ sender: UIButton) {
- if sender.tag <= 11 {
- currentString.append(sender.currentTitle!)
- updateUI(currentNeededString: currentString)
- } else if sender.tag == 19 {
- restartCalculator()
- } else {
- if firstNum == 0 && !currentString.isEmpty {
- firstNum = Double(currentString)!
- checkNumber = Double(currentString)!
- isDecimal = checkIfDecimal(number: checkNumber)
- if !isDecimal {
- firstNumInteger = Int(currentString)!
- updateUI(currentNeededString: "\(firstNumInteger)")
- } else {
- updateUI(currentNeededString: "\(firstNum)")
- }
- currentString = ""
- print("First Num: \(firstNum)")
- } else if firstNum != 0 && !currentString.isEmpty {
- secondNum = Double(currentString)!
- checkNumber = Double(currentString)!
- isDecimal = checkIfDecimal(number: checkNumber)
- if !isDecimal {
- secondNumInteger = Int(currentString)!
- updateUI(currentNeededString: "\(secondNumInteger)")
- } else {
- updateUI(currentNeededString: "\(secondNum)")
- }
- currentString = ""
- print("Second Num: \(secondNum)")
- whichCalculationWouldBePerformed()
- }
- if sender.tag == 12 {
- checkAction = lastKnownAction
- } else if sender.tag == 13 {
- checkAction = .addtion
- } else if sender.tag == 14 {
- checkAction = .subtraction
- } else if sender.tag == 15 {
- checkAction = . multiplication
- } else if sender.tag == 16 {
- checkAction = .division
- }
- lastKnownAction = checkAction
- }
- }
- func whichCalculationWouldBePerformed() {
- switch checkAction {
- case .addtion:
- performCalculation(calculationActionToPerform: .addtion)
- case .subtraction:
- performCalculation(calculationActionToPerform: .subtraction)
- case .equals:
- performCalculation(calculationActionToPerform: checkAction)
- case .multiplication:
- performCalculation(calculationActionToPerform: .multiplication)
- case .division:
- performCalculation(calculationActionToPerform: .division)
- }
- }
- func performCalculation(calculationActionToPerform _action : Check) {
- if _action == .addtion {
- result = firstNum + secondNum
- } else if _action == .subtraction {
- result = firstNum - secondNum
- } else if _action == .division {
- result = firstNum / secondNum
- } else if _action == .multiplication {
- result = firstNum * secondNum
- }
- firstNum = result
- checkNumber = result
- checkNumber = result
- isDecimal = checkIfDecimal(number: checkNumber)
- if !isDecimal {
- resultInteger = Int(result)
- updateUI(currentNeededString: "\(resultInteger)")
- } else {
- updateUI(currentNeededString: "\(result)")
- }
- }
- func checkIfDecimal(number : Double) -> Bool {
- if number - floor(number) > 0.000001 {
- return true
- } else {
- return false
- }
- }
- func restartCalculator() {
- updateUI(currentNeededString: "0")
- firstNum = 0
- secondNum = 0
- }
- func updateUI(currentNeededString : String) {
- resultLabel.text = currentNeededString
- }
- }
- enum Check {
- case addtion
- case subtraction
- case multiplication
- case division
- case equals
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement