// JavaScript Document
// Declaramos las variables de trabajo.
var Resultado, X, v1 = 0, v2 = 0, res = 0, ope = "";
// Función de inicio. Se lanza cuando termina la carga de la página.
$(function() {
// Guardamos la "caja" respuesta y la entrada "valor" en dos variables para utilizarlas mas facimente a lo largo de todo el código.
Resultado = $("#Respuesta");
X = $("#Valor");
fn_Clear();
//---------------- DAMOS DE ALTA LOS EVENTOS CLICK DE LOS BOTONES ------------\\
$("#Borrar").on("click", function(){fn_Borrar();});
$("#Resultado").on("click", function(){fn_Resultado();});
$("#Cuadrado").on("click", function(){fn_Cuadrado();});
$("#Inversa").on("click", function(){fn_Inversa();});
$("#Raiz").on("click", function(){fn_Raiz();});
$("#Entero").on("click", function(){fn_Entero();});
$("#Suma").on("click", function(){fn_Suma();});
$("#Resta").on("click", function(){fn_Resta();});
$("#Multiplica").on("click", function(){fn_Multiplica();});
$("#Divide").on("click", function(){fn_Divide();});
$("#Eleva").on("click", function(){fn_Eleva();});
$("#PotDos").on("click", function(){fn_PotDos();});
$("#Factorial").on("click", function(){fn_Factorial();});
$("#sumatorio").on("click", function(){fn_sumatorio();});
$("#producto").on("click", function(){fn_producto();});
//----------------------------------------------------------------------------\\
});
// Borrar "pantalla".
function fn_Clear() {
X.val("");
X.focus();
}
// Aviso "Introduzca un valor"
function fn_Aviso() {
Resultado.html("Debe introducir algún valor.");
X.focus();
}
// Funciones unitarias. Cuando pulsan el boton damos directamente el resultado.
// Cuadrado de un número.
function fn_Cuadrado() {
if (X.val() === "") {fn_Aviso();}
else {
Resultado.html(X.val() + "^2 = " + Math.pow(X.val(),2));
fn_Clear();
}
}
// Inverso de un número.
function fn_Inversa() {
Resultado.html("1/" + X.val() + " = " + (1/X.val()));
fn_Clear();
}
// Raiz cuadrada de un número.
function fn_Raiz() {
Resultado.html("Raiz de " + X.val() + " = " + Math.sqrt(X.val()));
fn_Clear();
}
// Devuelve la parte entera.
function fn_Entero() {
if (X.val() < 0) {
Resultado.html("Parte entera de " + X.val() + " = " + -Math.ceil(X.val()));
}
else {
Resultado.html("Parte entera de " + X.val() + " = " + Math.floor(X.val()));
}
fn_Clear();
}
// Devuelve el valor de 2 elevado a n.
function fn_PotDos() {
Resultado.html("2" + X.val() + " = " + Math.pow(2,X.val()));
}
// Factorial de n.
function fn_Factorial() {
var cont = X.val(), res = 1;
// Multiplicamos en un bucle todos los valores.
while (cont > 1) {
res *= cont--
}
Resultado.html("Factorial de " + X.val() + " = " + res);
}
// -------- FUNCIONES BINARIAS --------------
// Devuelve la suma de dos números.
function fn_Suma() {
v1 = X.val();
ope = "+";
Resultado.html(v1 + " + ... = ");
fn_Clear();
}
// Devuelve la resta de dos números.
function fn_Resta() {
v1 = X.val();
ope = "-";
Resultado.html(v1 + " - ... = ");
fn_Clear();
}
// Devuelve la multiplicación de dos números.
function fn_Multiplica() {
v1 = X.val();
ope = "x";
Resultado.html(v1 + " x ... = ");
fn_Clear();
}
// Devuelve la división de dos números.
function fn_Divide() {
v1 = X.val();
ope = "/";
Resultado.html(v1 + " / ... = ");
fn_Clear();
}
// Devuelve un número elevado al segundo.
function fn_Eleva() {
v1 = X.val();
ope = "^";
Resultado.html(v1 + " elevado a ... = ");
fn_Clear();
}
// --------------- FUNCIONES DE N OPERANDOS -------------------- \\
// Sumatorio.
function fn_sumatorio() {
var matriz = X.val().split(","), res = 0, valor, mensaje;
mensaje = X.val().replace(/,/g,'+');
for (valor of matriz) {
res += +valor;
}
Resultado.html(mensaje + " = " + res);
fn_Clear();
}
// Producro múltiple.
function fn_producto() {
var matriz = X.val().split(","), res = 1, cont, mensaje;
mensaje = X.val().replace(/,/g,'*');
cont = matriz.length;
while (cont > 0) {
res *= +matriz[--cont];
}
Resultado.html(mensaje + " = " + res);
fn_Clear();
}
// "Borra" la pantalla y reinicia las variables.
function fn_Borrar() {
v1 = 0;
v2 = 0;
res = 0;
ope = "";
Resultado.html("");
X.val("");
X.focus();
}
// Devuelve el resultado en función de la operación.
function fn_Resultado() {
v2 = X.val();
if (ope === "+") {
res = +v1 + +v2;
Resultado.html(v1 + " + " + v2 + " = " + res);
fn_Clear();
}
else if (ope === "-") {
res = +v1 - +v2;
Resultado.html(v1 + " - " + v2 + " = " + res);
fn_Clear();
}
else if (ope === "x") {
res = +v1 * +v2;
Resultado.html(v1 + " x " + v2 + " = " + res);
fn_Clear();
}
else if (ope === "/") {
res = +v1 / +v2;
Resultado.html(v1 + " / " + v2 + " = " + res);
fn_Clear();
}
else if (ope === "^") {
res = Math.pow(+v1, +v2);
Resultado.html(v1 + "" + v2 + " = " + res);
fn_Clear();
}
}