diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..fbb5dc3 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,29 @@ +{ + "parserOptions": { + "ecmaVersion": 6 + }, + "rules": { + "keyword-spacing": 1, + "space-before-function-paren": [1, "never"], + "eqeqeq": 1, + "space-infix-ops": 1, + "comma-spacing": 1, + "brace-style": 1, + "no-multiple-empty-lines": 1, + "camelcase": 1, + "func-call-spacing": 1, + "key-spacing": 1, + "semi": 1, + "no-floating-decimal": 1, + "no-multi-spaces": 1, + "object-property-newline": 1, + "padded-blocks": [1, "never"], + "space-before-blocks": 1, + "space-in-parens": 1, + "spaced-comment": 1, + "quotes": [1, "single"], + "id-length": [1, { "exceptions": ["i", "j", "x"] }], + "indent": [1, 2], + "no-array-constructor": 1 + } +} diff --git a/assets/diagrama1.jpg b/assets/diagrama1.jpg new file mode 100644 index 0000000..47a6dd0 Binary files /dev/null and b/assets/diagrama1.jpg differ diff --git a/assets/diagrama1.psc b/assets/diagrama1.psc new file mode 100644 index 0000000..aa130c2 --- /dev/null +++ b/assets/diagrama1.psc @@ -0,0 +1,36 @@ +Funcion variable_de_retorno <- isValidCard ( ) + sum<-0 + Escribir numberCard + Repetir + Leer numberCard + Para i<-0 Hasta numberCard.length Con Paso 1 Hacer + Si (numberCard[i]=' ' o isNaN(numberCard[i])) Entonces + Escribir numberCard + Fin Si + Fin Para + Hasta Que (numberCard.length <16 o numberCard.length >16) + Para j<-0 Hasta numberCard.length Con Paso 1 Hacer + charValue<-parseInt(numberCard[j]) + Si j%2<-0 Entonces + sum<-sum + charValue + Fin Si + Si j%2<>0 Entonces + Si ((charValue*2)<=9) Entonces + sum<-sum + (charValue*2) + Fin Si + Si ((charValue * 2) > 9) Entonces + twoDigits<-charValue*2.toString + sumDigits<-parseInt(twoDigits[0]) + parseInt(twoDigits[1]); + sum<-sum+sumDigits + Fin Si + Fin Si + Fin Para + Si sum%10<-0 Entonces + Leer "El número de su tarjeta es valido" + SiNo + Escribir document.getElementById("demo").innerHTML =("El número de su tarjeta es inválido") + Fin Si +Fin Funcion +Algoritmo tarjeta_de_credito + +FinAlgoritmo diff --git a/index.html b/index.html new file mode 100644 index 0000000..e7dc2ac --- /dev/null +++ b/index.html @@ -0,0 +1,35 @@ + + + + + Validación de número de tarjeta + + + +

Validador de número de tarjeta

+
+

¿Desea saber si el número de su tarjeta es válida?

+ +

+
+ + + diff --git a/js/app.js b/js/app.js new file mode 100644 index 0000000..dc11f6c --- /dev/null +++ b/js/app.js @@ -0,0 +1,54 @@ +// Verifica si el número de tarjeta es válido. +function isValidCard() { + // Almacena sumatoria de los dígitos. + var sum = 0; + var numberCard; + + // Hacer al menos una ves, si numberCard tiene más o menos de 16 elementos. + do { + // Los dígitos obtenidos son separados en un array y el orden es invertido. + numberCard = prompt('Escribe el número de tu tarjeta').split('').reverse(); + + // Ciclo que itera por cada elemento del array numberCard. + for (var i = 0; i < numberCard.length; i++) { + // Si el elemento es igual a un string vacio aparece nuevo prompt. + // Si el elemento es NaN aparece nuevo prompt. + if (numberCard[i] === ' ' || isNaN(numberCard[i])) { + numberCard = prompt('No coloque espacios vacíos o letras, \n vuelve a escribir el número de tu tarjeta. ').split('').reverse(); + } + } + } while (numberCard.length < 16 || numberCard.length > 16); + + for (var j = 0; j < numberCard.length; j++) { + // Convierte (parsea) una cadena y devuelve un entero de la base decimal. + var charValue = parseInt(numberCard[j]); + + // Si el índice del elemento es par, adiciona su valor a sum. + if (j % 2 === 0) { + sum += charValue; + } + + // Si el índice del elemento es impar, el elemento se multiplica por 2. + if (j % 2 !== 0) { + // Si el producto es menor a 9, se adiciona a sum. + if ((charValue * 2) <= 9) { + sum += (charValue * 2); + } + + // Si el producto es mayor a 9, se separan los dígitos del producto y se suman. + if ((charValue * 2) > 9) { + // El producto se convierte a string para separar los dígitos. + var twoDigits = (charValue * 2).toString(); + var sumDigits = parseInt(twoDigits[0]) + parseInt(twoDigits[1]); + sum += sumDigits; + } + } + } + + // Si el residuo se sum entre 10 es cero, el número de tarjeta es válido. + // Si el residuo se sum entre 10 no es cero, el número de tarjeta no es válido. + if (sum % 10 === 0) { + document.getElementById('demo').innerHTML = 'El número de su tarjeta es valido'; + } else + document.getElementById('demo').innerHTML = 'El número de su tarjeta es inválido'; +}