File size: 1,944 Bytes
e817952
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
let outputscreen = document.getElementById('output-screen');


function display(num) {
  outputscreen.value += num
}


function calculate() {
  try {
    outputscreen.value = eval(outputscreen.value)
  }
  catch (err) {
    alert("Invalid")
  }
}

function clr() {
  outputscreen.value = ''
}

function del() {
  outputscreen.value = outputscreen.value.slice(0, -1)
}

function sqrtAction() {
  const val = outputscreen.value.trim()
  if (val === '') return
  try {
    // evaluate the current expression first so the user can do e.g. "9+7" then √ -> sqrt(16)
    const evaluated = eval(val)
    if (typeof evaluated !== 'number' || isNaN(evaluated)) {
      alert('Invalid')
      return
    }
    if (evaluated < 0) {
      alert('Cannot take square root of negative number')
      return
    }
    outputscreen.value = Math.sqrt(evaluated)
  } catch (err) {
    alert('Invalid')
  }
}

function percentAction() {
  const val = outputscreen.value.trim()
  if (val === '') return
  try {
    const evaluated = eval(val)
    if (typeof evaluated !== 'number' || isNaN(evaluated)) {
      alert('Invalid')
      return
    }
    outputscreen.value = evaluated / 100
  } catch (err) {
    alert('Invalid')
  }
}

function squareAction() {
  const val = outputscreen.value.trim()
  if (val === '') return
  try {
    const evaluated = eval(val)
    if (typeof evaluated !== 'number' || isNaN(evaluated)) {
      alert('Invalid')
      return
    }
    outputscreen.value = evaluated * evaluated
  } catch (err) {
    alert('Invalid')
  }
}

function toggleSign() {
  const val = outputscreen.value.trim()
  if (val === '') return
  try {
    const evaluated = eval(val)
    if (typeof evaluated !== 'number' || isNaN(evaluated)) {
      alert('Invalid')
      return
    }
    outputscreen.value = evaluated * -1
  } catch (err) {
    alert('Invalid')
  }
}