Skip to content

Commit c4d52f8

Browse files
committedApr 1, 2015
End of Assignment
Implement all the basic functions requirements and some of the credit points
1 parent 41e7a8b commit c4d52f8

File tree

3 files changed

+288
-121
lines changed

3 files changed

+288
-121
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Bucket
3+
type = "1"
4+
version = "2.0">
5+
</Bucket>

‎Calculator/Base.lproj/Main.storyboard

+207-119
Large diffs are not rendered by default.

‎Calculator/ViewController.swift

+76-2
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,53 @@
77
//
88

99
import UIKit
10+
import Foundation
11+
12+
extension String {
13+
var length: Int {
14+
return countElements(self)
15+
}
16+
}
1017

1118
class ViewController: UIViewController {
1219

1320
@IBOutlet weak var display: UILabel!
21+
@IBOutlet weak var history: UILabel!
1422

1523
var userIsInTheMiddleOfTypingANumber: Bool = false
24+
var isFloatPoint = false
1625

1726
@IBAction func appendDigit(sender: UIButton) {
1827
let digit = sender.currentTitle!
19-
if(userIsInTheMiddleOfTypingANumber){
28+
if(digit == "0" && display.text! == "0"){
29+
30+
}else if(userIsInTheMiddleOfTypingANumber && display.text! != "0"){
2031
display.text = display.text! + digit
2132
}else{
2233
display.text = digit
2334
userIsInTheMiddleOfTypingANumber = true
2435
}
25-
36+
}
37+
38+
@IBAction func appendFloatPoint(sender: UIButton) {
39+
if(!userIsInTheMiddleOfTypingANumber){
40+
display.text = "0."
41+
isFloatPoint = true
42+
userIsInTheMiddleOfTypingANumber = true
43+
}else if(!isFloatPoint){
44+
display.text = display.text! + "."
45+
isFloatPoint = true
46+
userIsInTheMiddleOfTypingANumber = true
47+
}
48+
}
49+
50+
@IBAction func appendPi(sender: UIButton) {
51+
if(userIsInTheMiddleOfTypingANumber){
52+
enter()
53+
}
54+
display.text = "π"
55+
operandStack.append(M_PI)
56+
println("operandStack = \(operandStack)")
2657
}
2758

2859
@IBAction func operate(sender: UIButton) {
@@ -36,6 +67,8 @@ class ViewController: UIViewController {
3667
case "+": performOperation { $1 + $0 }
3768
case "": performOperation { $1 - $0 }
3869
case "": performOperation { sqrt($0) }
70+
case "sin": performOperation { sin($0) }
71+
case "cos": performOperation { cos($0) }
3972
default: break
4073
}
4174
}
@@ -58,10 +91,51 @@ class ViewController: UIViewController {
5891

5992
@IBAction func enter() {
6093
userIsInTheMiddleOfTypingANumber = false
94+
isFloatPoint = false
6195
operandStack.append(displayValue)
6296
println("operandStack = \(operandStack)")
6397
}
6498

99+
@IBAction func addHistory(sender: UIButton) {
100+
if(history.text == "History:"){
101+
history.text = sender.currentTitle!
102+
}else{
103+
history.text = history.text! + sender.currentTitle!
104+
}
105+
}
106+
107+
@IBAction func clear(sender: UIButton) {
108+
userIsInTheMiddleOfTypingANumber = false
109+
isFloatPoint = false
110+
display.text = "0"
111+
history.text = "History:"
112+
operandStack.removeAll()
113+
println("operandStack = \(operandStack)")
114+
}
115+
116+
@IBAction func backspace(sender: UIButton) {
117+
if(userIsInTheMiddleOfTypingANumber && display.text!.length > 0){
118+
display.text = display.text!.substringToIndex(advance(display.text!.endIndex, -1))
119+
//history.text = history.text!.substringToIndex(advance(history.text!.endIndex, -1))
120+
history.text = dropLast(history.text!)
121+
}
122+
}
123+
124+
@IBAction func changeSign(sender: UIButton) {
125+
if(userIsInTheMiddleOfTypingANumber){
126+
if(isFloatPoint){
127+
display.text = "\(displayValue * -1)"
128+
}else{
129+
display.text = "\(Int(displayValue) * -1)"
130+
}
131+
}else{
132+
if(operandStack.count >= 1){
133+
displayValue = operandStack.removeLast() * -1
134+
enter()
135+
}
136+
}
137+
}
138+
65139
var displayValue: Double{
66140
get{
67141
return NSNumberFormatter().numberFromString(display.text!)!.doubleValue

0 commit comments

Comments
 (0)
Please sign in to comment.