-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
126 lines (110 loc) · 3 KB
/
main.js
File metadata and controls
126 lines (110 loc) · 3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
var resultScreen = null;
var memory = null;
var operation = null;
var historyScreen = null;
var screenContainsUserInput = true;
window.onload = function () {
resultScreen = document.getElementById("result-screen");
historyScreen = document.getElementById("history-screen");
resultScreen.value = "0";
}
function numClicked(button) {
button.blur();
if (!screenContainsUserInput) {
resultScreen.value = "";
screenContainsUserInput = true;
}
if (resultScreen.value == "0") resultScreen.value = "";
if (resultScreen.value.endsWith(".") && button.value == ".") return;
resultScreen.value += button.value;
}
function addClicked(button) {
button.blur();
updateHistory("+");
executePendingOperation();
operation = (a, b) => a + b;
}
function subtractClicked(button) {
button.blur();
if (resultScreen.value.length > 0) {
updateHistory("-");
executePendingOperation();
operation = (a, b) => a - b;
} else {
resultScreen.value = "-";
}
}
function multiplyClicked(button) {
button.blur();
updateHistory("x");
executePendingOperation();
operation = (a, b) => a * b;
}
function divideClicked(button) {
button.blur();
updateHistory("/");
executePendingOperation();
operation = division;
}
function ceClicked(button) {
button.blur();
resultScreen.value = "0";
}
function cClicked(button) {
button.blur();
reset();
}
function delClicked(button) {
button.blur();
if (resultScreen.value.length > 1) {
resultScreen.value = resultScreen.value.slice(0, resultScreen.value.length -1);
} else {
resultScreen.value = "0";
}
}
function plusMinusClicked(button) {
button.blur();
resultScreen.value = -1 * parseFloat(resultScreen.value);
}
function equalsClicked(button) {
button.blur();
executePendingOperation();
memory = null;
historyScreen.innerHTML = "";
operation = null;
}
function executePendingOperation() {
if (!screenContainsUserInput) return;
var scr = Number.parseFloat(resultScreen.value);
if (operation) {
memory = operation(memory, scr);
}
else {
memory = scr;
}
resultScreen.value = memory;
screenContainsUserInput = false;
}
function updateHistory(operator) {
if (screenContainsUserInput) {
historyScreen.innerHTML += resultScreen.value + operator;
} else {
historyScreen.innerHTML = historyScreen.innerHTML.substring(0, historyScreen.innerHTML.length - 1) + operator;
}
}
function reset() {
memory = null;
operation = null;
historyScreen.innerHTML = "";
resultScreen.value = "0";
screenContainsUserInput = true;
}
function division(a,b) {
if (b == 0) {
reset();
resultScreen.value = "Cannot divide by zero";
screenContainsUserInput = false;
throw "Division by zero";
}
return a/b;
}