Advertisement
ultravibez

Calculator Homework Swift

Jan 27th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 4.97 KB | None | 0 0
  1. //
  2. //  ViewController.swift
  3. //  Calculator
  4. //
  5. //  Created by Matan Dahan on 24/01/2018.
  6. //  Copyright © 2018 Matan Dahan. All rights reserved.
  7. //
  8.  
  9. import UIKit
  10.  
  11. class ViewController: UIViewController {
  12.  
  13.     @IBOutlet weak var resultLabel: UILabel!
  14.    
  15.     var currentString : String = ""
  16.     var nextNumber : String = ""
  17.     var firstNum : Double = 0
  18.     var firstNumInteger : Int = 0
  19.     var secondNum : Double = 0
  20.     var secondNumInteger : Int = 0
  21.     var counter : Int = 0
  22.     var checkAction : Check = Check.addtion
  23.     var lastKnownAction : Check = Check.addtion
  24.     var result : Double = 0
  25.     var resultInteger : Int = 0
  26.     var isDecimal : Bool = true
  27.     var checkNumber : Double = 0
  28.    
  29.     override func viewDidLoad() {
  30.         super.viewDidLoad()
  31.         // Do any additional setup after loading the view, typically from a nib.
  32.         restartCalculator()
  33.     }
  34.  
  35.     override func didReceiveMemoryWarning() {
  36.         super.didReceiveMemoryWarning()
  37.         // Dispose of any resources that can be recreated.
  38.     }
  39.  
  40.  
  41.     @IBAction func buttonPressed(_ sender: UIButton) {
  42.         if sender.tag <= 11 {
  43.             currentString.append(sender.currentTitle!)
  44.             updateUI(currentNeededString: currentString)
  45.         } else if sender.tag == 19 {
  46.             restartCalculator()
  47.         } else {
  48.             if firstNum == 0 && !currentString.isEmpty {
  49.                 firstNum = Double(currentString)!
  50.                 checkNumber = Double(currentString)!
  51.                 isDecimal = checkIfDecimal(number: checkNumber)
  52.                 if !isDecimal {
  53.                     firstNumInteger = Int(currentString)!
  54.                     updateUI(currentNeededString: "\(firstNumInteger)")
  55.                 } else {
  56.                     updateUI(currentNeededString: "\(firstNum)")
  57.                 }
  58.                 currentString = ""
  59.                 print("First Num: \(firstNum)")
  60.             } else if firstNum != 0 && !currentString.isEmpty {
  61.                 secondNum = Double(currentString)!
  62.                 checkNumber = Double(currentString)!
  63.                 isDecimal = checkIfDecimal(number: checkNumber)
  64.                 if !isDecimal {
  65.                     secondNumInteger = Int(currentString)!
  66.                     updateUI(currentNeededString: "\(secondNumInteger)")
  67.                 } else {
  68.                     updateUI(currentNeededString: "\(secondNum)")
  69.                 }
  70.                 currentString = ""
  71.                 print("Second Num: \(secondNum)")
  72.                 whichCalculationWouldBePerformed()
  73.             }
  74.             if sender.tag == 12 {
  75.                 checkAction = lastKnownAction
  76.             } else if sender.tag == 13 {
  77.                 checkAction = .addtion
  78.             } else if sender.tag == 14 {
  79.                 checkAction = .subtraction
  80.             } else if sender.tag == 15 {
  81.                 checkAction = . multiplication
  82.             } else if sender.tag == 16 {
  83.                 checkAction = .division
  84.             }
  85.             lastKnownAction = checkAction
  86.         }
  87.     }
  88.    
  89.     func whichCalculationWouldBePerformed() {
  90.         switch checkAction {
  91.         case .addtion:
  92.             performCalculation(calculationActionToPerform: .addtion)
  93.         case .subtraction:
  94.             performCalculation(calculationActionToPerform: .subtraction)
  95.         case .equals:
  96.             performCalculation(calculationActionToPerform: checkAction)
  97.         case .multiplication:
  98.             performCalculation(calculationActionToPerform: .multiplication)
  99.         case .division:
  100.             performCalculation(calculationActionToPerform: .division)
  101.         }
  102.     }
  103.    
  104.     func performCalculation(calculationActionToPerform _action : Check) {
  105.         if _action == .addtion {
  106.             result = firstNum + secondNum
  107.         } else if _action == .subtraction {
  108.             result = firstNum - secondNum
  109.         } else if _action == .division {
  110.             result = firstNum / secondNum
  111.         } else if _action == .multiplication {
  112.             result = firstNum * secondNum
  113.         }
  114.         firstNum = result
  115.         checkNumber = result
  116.         checkNumber = result
  117.         isDecimal = checkIfDecimal(number: checkNumber)
  118.         if !isDecimal {
  119.             resultInteger = Int(result)
  120.             updateUI(currentNeededString: "\(resultInteger)")
  121.         } else {
  122.             updateUI(currentNeededString: "\(result)")
  123.         }
  124.     }
  125.    
  126.     func checkIfDecimal(number : Double) -> Bool {
  127.         if number - floor(number) > 0.000001 {
  128.             return true
  129.         } else {
  130.             return false
  131.         }
  132.     }
  133.    
  134.     func restartCalculator() {
  135.         updateUI(currentNeededString: "0")
  136.         firstNum = 0
  137.         secondNum = 0
  138.     }
  139.    
  140.     func updateUI(currentNeededString : String) {
  141.         resultLabel.text = currentNeededString
  142.     }
  143. }
  144.        
  145. enum Check {
  146.     case addtion
  147.     case subtraction
  148.     case multiplication
  149.     case division
  150.     case equals
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement