-
Notifications
You must be signed in to change notification settings - Fork 0
/
calculadora.js
133 lines (129 loc) · 4.19 KB
/
calculadora.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
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
127
128
129
130
131
132
133
window.onload= function(){ //acciones tras cargar la pagina
pantalla = document.getElementById('text'); //elemento pantalla de salida
document.onkeydown= teclado;
}
x="0";//guardar el numero en la pantalla
xi="1";// iniciar el numero en la pantalla 1=si; 0=no;
coma=0;// estado de coma decimal 0=no; 1=si;
ni=0;// numero oculto en espera
op="no";//operaciones en curso; no=sin operacion.
//para visualizar el numero//
function numero(xx){ // recoge el numero pulsado en el argunmento
if (x=="0" || xi=="1"){ //inicializar un numero
pantalla.innerHTML=xx; //mostrar en pantalla
x=xx;
if(xx==" . "){ //si escribimos una coma al principio del numero
pantalla.innerHTML="0.";
x=xx;// guardar el numero
coma=1; //cambia el estado de la coma
}
}
else{//continuar escribiendo un numero
if (xx=="." && coma==0){
//si se escribe la coma decimal por primera vez
pantalla.innerHTML+=xx;
x+=xx;
coma=1; //cambiar el estado de la coma
}
//para que no se escriban dos comas
else if (xx=="." && coma==1){}
//resto de casos: escribir un numero del 0 al9:
else {
pantalla.innerHTML+=xx;
x+=xx;
}
}
xi=0// el numero esta iniciado y podemos ampliarlo
}
function operar(s){
igualar();// si hay operaciones pendientes se realizan primero
ni=x;//ponemos el numero en espera.
op=s; //guardamos el tipo de operacion
xi=1;//inicializarlapantalla
}
function igualar(){
if (op=="no"){//no hay operaciones pendiente
pantalla.innerHTML=x;
}
else {//con operacion pendiente resolvemos.
sl=ni+op+x//escribimos la operacion en una cadena.
sol=eval(sl)// convertimos la cadena a codigo y resolvemos
pantalla.innerHTML=sol //mostramos la solucion
x=sol; //guardamos la solucion
op="no"; //ya no hay operaciones pendietes
xi=1; //se puede reiniciar la pantalla
}
}
function raizc(){
x=Math.sqrt(x)//resolver raiz cuadrada
pantalla.innerHTML=x; //mostrar en pantalla resultado
op="no"//quitar operaciones pendientes
xi=1; //se puede reiniciarla pantalla
}
function porcent() {
x=x/100 // dividir por 100 el numero
pantalla.innerHTML=x;// mostrar en pantalla
igualar() //resuelve y muestra operaciones pendiente
xi=1; //reiniciar la pantalla
}
function opuest(){
nx=Number(x);//convertir en numero
nx=-nx;// cambiar de signo
x=String(nx); // volver a convertir en cadena
pantalla.innerHTML=x; //mostrar en pantalla
}
function inve() {
nx=Number(x);
nx=(1/nx);
x= String(nx);
pantalla.innerHTML=x;
xi=1;
}
function retro() {// borrar solo el ultimo caracter
cifras=x.length// los caracteres de la pantalla
br = x.substr(cifras-1, cifras); //info del ultmo caracter
x=x.substr(0,cifras-1)// quitar el ultimo caracter
if (x=="")
{x="0";}// si yano quedan numero colocas cero.
if(br==".")
{
coma=0; //escribir de nuevo la coma
}
pantalla.innerHTML=x;//mostrar el numero.
}
function borradoParcial() {
pantalla.innerHTML=0; //Borrado de pantalla;
x=0; //Borrado indicador número pantalla.
coma=0; //reiniciamos también la coma
}
function borradoTotal() {
pantalla.innerHTML=0; //poner pantalla a 0
x="0"; //reiniciar número en pantalla
coma=0; //reiniciar estado coma decimal
ni=0 //indicador de número oculto a 0;
op="no" //borrar operación en curso.
}
function teclado(elEvento) {
evento = elEvento || window.event;
k=evento.keyCode;
if (k>47&&k<58){//teclado alfanumerico
p=k-48; //buscar el numero a mostrar;
p=String(p);//convertir en cadena para pasar a la pantalla.
numero(p); //enviar para mostrarla pantalla
}
//del teclado de numeros.
if(k>95 && k<106){
p=k-96;
p=String(p);
numero(p);
}
if (k==110 || k==190) {numero(".")} //teclas de coma decimal
if (k==106) {operar('*')} //tecla multiplicación
if (k==107) {operar('+')} //tecla suma
if (k==109) {operar('-')} //tecla resta
if (k==111) {operar('/')} //tecla división
if (k==32 || k==13) {igualar()} //Tecla igual: intro o barra espaciadora
if (k==46) {borradoTotal()} //Tecla borrado total: "supr"
if (k==8) {retro()} //Retroceso en escritura : tecla retroceso.
if (k==36) {borradoParcial()} //Tecla borrado parcial: tecla de inicio.
}