Las funciones Javascript

Estos casos os lo planteo para comenzar a crear funciones y aprender como usarlas. Las funciones de Javascript permiten tener un bloque de código (con nombre) que se puede ejecutar desde distintas partes de un programa.
Lo que se pide
Aclaraciones
Crea una función que tenga dos argumentos: num1, num2, y que deuelva como resultado la suma de ambos números. Se supone que se usarán solo números válidos. 
Llamo a la función como sumar(3,5) deberá devolver 8.

function sumar(num1, num2){

    return (num1+num2)

}

a = parseInt(prompt("Primer número"));

b = parseInt(prompt("Segundo número"));

alert(sumar(a,b));

Esta función se va a llamar esPar(num) y deberá devolver verdadero si el argumento es par y falso si es impar. Se acepta que solo se usarán números válidos.
Por ejemplo al llamarla como esPar(5) me dará false, mientras que con esPar(6) me dará true.

function esPar(num){

    return (num%2 == 0);

}

dato = parseInt(prompt("Escribir un número"));

alert(esPar(dato));

Función que calcule si un número es múltiplo de otro. La función recibirá dos argumentos, el primero será el supuesto mutiplo del segundo argumento.
Si ejecuto o llamo a la función con esMultiplo(40,4) debe devolver true porque 40 es divisible por 4.

function esMultiplo(mult, div){

    return (mult%div == 0)

}

num1 = parseInt(prompt("Escribir un número"));

num2 = parseInt(prompt("Escribir otro número"));

alert(esMultiplo(num1, num2));

Definir una función que cree una cadena de letras repetidas tantas veces como le digamos. La función recibe dos argumentos: la letra y el número de repeticiones.
Al ejecutar repetir('a', 5) deberá devover la caden  aaaaa.

function repetir(letra, veces){

    var cad = '';

    for(let i=0; i < veces; i++){

        cad += letra;

        }

return cad;

}

var letra, num;

letra = prompt("Escribir una sola letra");

num = parseInt(prompt("Escribir un número"));

alert(repetir(letra, num));

Usa el algoritmo de Euclides para diseñar una función que determine el máximo común divisor de dos números. Bueno este algoritmo es bien simple. Para clacular el mcd de A y B:

  • Si A = 0 entonces MCD(A,B)=B, ya que el MCD(0,B)=B, y podemos detenernos.  
  • Si B = 0 entonces MCD(A,B)=A, ya que el MCD(A,0)=A, y podemos detenernos.  
  • Calcula el resto de A/B
  • Asigna a A el valor de B
  • Asigna a B el resto
  • Repite hasta que A o B sean 0.
Si me piden el MCD(10, 5) tendré 5 como solución, y el MCD( 24, 9) será 1, y el MCD(12,20) será 4

function MCD(n1, n2){

var mcd, resto;

while (n1 != 0 && n2 != 0){

resto = n1%n2;

n1 = n2;

n2 = resto;

}

if(n1==0) mcd = n2;

if(n2==0) mcd = n1;

return mcd;

}

num1 = parseInt(prompt("Escribir un número"));

num2 = parseInt(prompt("Escribir otro número"));

alert("MCD de "+num1+" y "+num2 + " es "+ MCD(num1, num2));

Diseña una función que calcule el factorial de un número, usa una función recursiva (que se llama a si misma). Recuerda que el factorial de un número es el resultado de multiplicar cada número por el anterior hasta llegar a 1. Y el factorail de 0 es por definición 1
Si escribo factorial(3) obtendré 3*2*1 = 6,

function factorial(n){

   if(n==0) {

      return 1

      }

  return n*factorial(n-1)

}

var dato;

dato = parseInt(prompt("escirbe un número"));

alert("Factorial de "+dato+" = "+ factorial(dato))

Escribir una función que reciba un número como argumento y lo devuelva invertido, o sea, escrito del revés. Usar esta función para determinar si un número es capicúa (palíndromo)
Si ejecuto invertir(123) me deberá devolver el número 321 y me diría que no es capicua. Sin embargo si hago invertir(242) el resultado sería 242, y la prueba me diría que es capicúa.

function invertir(num){

    var cad= ''';

    while (num>0){

        cad += num%10;

        num = parseInt(num/10)

    }

return parseInt(cad);

}

var dato;

dato = parseInt(prompt("Escirbe un número"));

if (dato == invertir(dato)){

       alert(dato+" es palíndromo")

      }

else{

      alert(dato+" no es palíndromo")

     }

Escribe una función que recibe como argumento un precio y el porcentaje de impuestos. La función devolverá el valor total a pagar, teniendo en cuenta que al precio se le descuenta un porcentaje del 10% si es mayor de 100 euros.
Si he comprado por valor de 200 euros con un impuesto del 5%, me descuentan un 10% por tanto pago 180 euros más los impuestos que son el 5% de 180. En total 189 euros.

function total(precio, impto){

    var neto;

    if (precio > 100){

        precio = precio - 10*precio/100;

    }

    neto = precio + precio*impto/100;

    return neto;

}

var gasto, imp;

gasto = parseInt(prompt('Precio total'));

imp = parseInt(prompt('Impuesto %'));

alert("El total  pagar es "+total(gasto, imp));

 

En esta función se trata de convertir notas a calificaciones literales de manera que menos de 5 es suspenso, un 5 es aprobado, el 6 es bine, el 7 y el 8 son notable, el 9 es sobresaliente y el 10 es matrícula.
Por ejemplo si pido miCalificacion(5) la función me dirá tu calificación es Aprobado

function calificacion(nota){

    var calif;

    switch (nota){

        case 5:

            calif = 'Aprobado';

            break;

        case 6:

            calif = 'Bien';

            break;

        case 7:

        case 8:

            calif = 'Notable';

            break;

        case 9:

            calif = 'Sbresaliente';

            break;

        case 10:

            calif = 'Matrícula';

            break;

        default:

            calif= 'Suspenso'

     }

return calif;

}

var minota;

minota = parseInt(prompt("Entrar nota de 1 a 10"));

alert("tu calificación es "+calificacion(minota));

Escibe una función que devuelva el siglo al que correponde un año que se la pasa como argumento. El siglo 1 va del año 1 al 100, el siglo 2 va del 101 al 200....
Por ejemplo si le pido siglo(1910) me dirá siglo 20

function siglo(año){

   var siglo = parseInt((año - 1)/100) + 1;

   return siglo;

}

var añoActual;

añoActual = parseInt(prompt("Entrar año completo"));

alert("Pertenece al siglo " + siglo(añoActual));

scripts