-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
91 lines (74 loc) · 2.7 KB
/
script.js
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
const caracteres = new Set(['+','-','x','÷','.','^','-','x','÷']);
const numbers = new Set(['0','00','1','2','3','4','5','6','7','8','9']);
let memoria = 0;
let resultadoFinal;
function escrever(char) {
let valor = document.getElementById("tela").innerHTML;
if (valor === '0' && char === '0') return;
if (valor == resultadoFinal && resultadoFinal != 0 && (char === '.' || numbers.has(char))) {
document.getElementById("tela").innerHTML = char;
resultadoFinal = '';
return;
}
if (valor.length > 28) {
document.getElementById("tela").innerHTML = 'Número Grande';
}
else if (valor === NaN || valor === "Infinity" || valor === '0' && char > 0) {
document.getElementById("tela").innerHTML = char;
resultadoFinal = '';
}
else if (valor === 'Número Grande' && char) return;
else if (verificarOperação(valor[valor.length-1], char)) {
valor += char;
document.getElementById("tela").innerHTML = valor;
resultadoFinal = '';
}
else return;
}
function verificarOperação(valor, num) {
if (numbers.has(num)) return true;
if (valor === num) return false;
if (caracteres.has(valor) && caracteres.has(num)) {
if ((valor === 'x' || valor === '÷' || valor === "^") && num === '-') return true;
return;
}
return true;
}
function limpar() {
document.getElementById("tela").innerHTML = '0';
}
function apagar() {
let numero = document.getElementById("tela").innerHTML;
if (numero === 'Número Grande') limpar();
else if (numero == resultadoFinal) limpar();
else {
numero = numero.substring(0, numero.length -1);
if (numero) document.getElementById("tela").innerHTML = numero;
else document.getElementById("tela").innerHTML = '0';
}
}
function calcular() {
let operacao = document.getElementById("tela").innerHTML;
operacao = operacao.replace(/÷/g, '/').replace(/x/g, '*').replace(/\^/g, '**');
let resultado = eval(operacao);
if (resultado.toString().length > 28) {
document.getElementById("tela").innerHTML = 'Número Grande';
}
else {
resultadoFinal = resultado;
document.getElementById("tela").innerHTML = resultado;
}
}
function memoriaClear() { memoria = 0 }
function memoriaRegister() {
resultadoFinal = ''+memoria;
document.getElementById("tela").innerHTML = resultadoFinal;
}
function memoriaPlus() {
calcular()
memoria += Number(document.getElementById("tela").innerHTML)
}
function memoriaMinus() {
calcular();
memoria -= Number(document.getElementById("tela").innerHTML);
}