Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import UIKit
- class ViewController: UIViewController {
- @IBOutlet var buttonResponseLabel: UILabel!
- var userIsCurrentlyTyping: Bool = false
- var storedValue: Int = 0;
- var currentOperation = 0
- var currentNumberInLabel = ""
- @IBAction func buttonAppend(_ sender: UIButton)
- {
- let buttonTitle = sender.currentTitle!
- switch buttonTitle
- {
- case "+":
- currentOperation = 1
- storedValue = Int(currentNumberInLabel)!
- buttonResponseLabel.text = ""
- case "-":
- currentOperation = 2
- storedValue = Int(currentNumberInLabel)!
- buttonResponseLabel.text = ""
- case "*":
- currentOperation = 3
- storedValue = Int(currentNumberInLabel)!
- buttonResponseLabel.text = ""
- case "/":
- currentOperation = 4
- storedValue = Int(currentNumberInLabel)!
- buttonResponseLabel.text = ""
- default:
- if buttonTitle == "="
- {
- var finalValue = 0
- print(currentNumberInLabel)
- let secondStoredValue = Int(currentNumberInLabel)!
- if currentOperation == 1
- {
- finalValue = storedValue + secondStoredValue
- buttonResponseLabel.text = ""
- buttonResponseLabel.text = String(finalValue)
- }
- else if currentOperation == 2
- {
- finalValue = storedValue - secondStoredValue
- buttonResponseLabel.text = ""
- buttonResponseLabel.text = String(finalValue)
- }
- else if currentOperation == 3
- {
- finalValue = storedValue * secondStoredValue
- buttonResponseLabel.text = ""
- buttonResponseLabel.text = String(finalValue)
- }
- else if currentOperation == 4
- {
- finalValue = storedValue / secondStoredValue
- buttonResponseLabel.text = ""
- buttonResponseLabel.text = String(finalValue)
- }
- }
- else
- {
- if userIsCurrentlyTyping
- {
- currentNumberInLabel = buttonResponseLabel.text! + buttonTitle
- buttonResponseLabel.text = currentNumberInLabel
- }
- else
- {
- userIsCurrentlyTyping = true
- buttonResponseLabel.text = ""
- buttonResponseLabel.text = buttonTitle
- }
- }
- print("(currentOperation) (buttonTitle)")
- }
- }
- }
- import UIKit
- class ViewController: UIViewController {
- struct Operator {
- var stringRepresentation: String
- var `operator`: (Int, Int) -> Int //quotes required as operator is a keyword
- }
- var operators = ["+":Operator(stringRepresentation:"+", operator:+),
- "-":Operator(stringRepresentation:"-", operator:-),
- "*":Operator(stringRepresentation:"*", operator:*),
- "/":Operator(stringRepresentation:"/", operator:/)]
- @IBOutlet var buttonResponseLabel: UILabel!
- var userIsCurrentlyTyping: Bool = false
- var storedValue: Int = 0;
- var currentOperation: Operator?
- var currentNumberInLabel = ""
- var buttonTitle = ""
- @IBAction func buttonAppend(_ sender: UIButton) {
- buttonTitle = sender.currentTitle!
- if let chosenOperator = operators[buttonTitle] {
- currentOperation = chosenOperator
- storedValue = Int(currentNumberInLabel)!
- buttonResponseLabel.text = ""
- } else if buttonTitle == "=" {
- showResult()
- } else if userIsCurrentlyTyping {
- currentNumberInLabel = buttonResponseLabel.text! + buttonTitle
- buttonResponseLabel.text = currentNumberInLabel
- } else {
- userIsCurrentlyTyping = true
- buttonResponseLabel.text = buttonTitle
- }
- print("(currentOperation) (buttonTitle)")
- }
- func showResult() {
- print(currentNumberInLabel)
- guard let currentOperator = currentOperation else {
- print("This should never happen. Fail silently")
- return
- }
- operate(withOperator: currentOperator.operator)
- }
- func operate(withOperator op: (Int, Int) -> Int){
- let secondStoredValue = Int(currentNumberInLabel)!
- let finalValue = op(storedValue, secondStoredValue)
- buttonResponseLabel.text = String(finalValue)
- }
- }
- enum CalculatorOperation {
- case add
- case subtract
- case multiply
- case divide
- init?(from buttonTitle: String) {
- switch buttonTitle {
- case "+": self = .add
- case "-": self = .subtract
- case "*": self = .multiply
- case "/": self = .divide
- default: return nil
- }
- }
- func apply(to left: Int, and right: Int) -> Int {
- switch self {
- case .add:
- return left + right
- case .subtract:
- return left - right
- case .multiply:
- return left * right
- case .divide:
- return left / right
- }
- }
- }
- class ViewController: UIViewController {
- @IBOutlet var inputLabel: UILabel!
- var firstNumber: Int = 0
- var currentOperation: CalculatorOperation? = nil
- // connect 1,2,3,4,5,6,7,8,9,0 buttons to this action
- @IBAction func updateNumber(_ numberButton: UIButton) {
- // update the input label with whatever number has been pressed
- let numberTitle = numberButton.currentTitle!
- inputLabel.text = inputLabel.text! + numberTitle
- }
- // connect '+', '-', '*', '/' buttons to this action
- @IBAction func updateOperation(_ operationButton: UIButton) {
- // update the operation based on the key pressed
- let operationTitle = operationButton.currentTitle!
- currentOperation = CalculatorOperation(from: operationTitle)
- // save the number shown in the input as the first number
- let currentinput = inputLabel.text!
- firstNumber = Int(currentinput)!
- // clear out the input label so it's ready for new number to be entered
- inputLabel.text = ""
- }
- // connect '=' button to this action
- @IBAction func performCalculation(_ sender: UIButton) {
- // get the second number from whatever is currently in the input label
- let currentinput = inputLabel.text!
- let secondNumber = Int(currentinput)!
- let finalValue = currentOperation!.apply(to: firstNumber, and: secondNumber)
- // update input label with the calculated value
- inputLabel.text = String(finalValue)
- }
- }
- enter code here import UIKit
- override func viewDidLoad() {
- super.viewDidLoad()
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- }
- @IBOutlet weak var current: UITextField!
- @IBOutlet weak var precentExamWorth: UITextField!
- @IBOutlet weak var desired: UITextField!
- {
- var gradeNeeded = 0
- var precentExamWorth = 0.15
- var desired = 0
- var current = 0
- var x = 0 - (0.85 * 0) / 0.15
Add Comment
Please, Sign In to add comment