Titulo

Visitas: 55326
Posts de Noviembre
Comprobando Tarjetas
Noviembre
27
Aunque tiene una utilidad limitada (por no decir nula), voy a explicar como comprobar si una tarjeta de crédito/debido es correcta, es decir, si el Nº de tarjeta es válido.
El sistema es bien sencillo, y se implementa en un simple algoritmo sin dificultad.
La idea es multiplicar por 2 los numeros de las posiciones impares. Si cada uno de estos números ya multiplicados, tiene 2 digitos, sumarlos para que solo quede en uno.
Tras esto, sumamos los valores calculados con los de las posiciones pares (que no hemos modificado).
Si el valor total calculado, es múltiplo de 10, entonces tendremos un número válido, en caso contrario será erroneo.

Para aclararlo un poco, un ejemplo:
Tenemos el siguiente numero de tarjeta: 4202 3174 4115 3256 (Nº inventado)
lo que hacemos es multiplicar por 2 los nºs de las posiciones impares, es decir
4x2 =8
0x2=0
3x2=6
7x2=14 (Como tiene 2 digitos, los sumamos) 4+1=5
4x2=8
1x2=2
3x2=6
5x2=10 (Como tiene 2 digitos, los sumamos) 1+0=1

Digamos que el número que tenemos, tras operar esto, es:
8202 6154 8125 6216
Simplemente sumamos esto:
8+2+0+2+6+1+5+4+8+1+2+5+6+2+1+6= 59

Como 59 no es múltiplo de 10, tenemos un número erroneo.

Viendo que es 59, podriamos modificar el primer valor '2' por un 3, y sumaria 60, tendriamo un numero válido. es decir, 4302 3174 4115 3256 es un nº válido.

Un programa para verificar esto en C# de forma rapida y a traves de consola (con nº de tarjeta por parámetro en la ejecucion) seria algo asi (sin control de errores ni nada por el estilo)


static void Main(string[] args)
{
    Console.WriteLine("Nº de Tarjeta: {0}",args[0]);
        if (CVValido(args[0]))
            Console.WriteLine("Numero Valido");
        else
            Console.WriteLine("Numero Erroneo");
        Console.ReadKey();
}
static bool CVValido(string numero)
{
    int conta;
        int acum=0;
        int n;
        for (conta = 0; conta < numero.Length; conta++)
        {
            if (conta % 2 == 0)
                {
                    n = 2 * (int.Parse(numero[conta].ToString()));
                        if (n > 9)
                            n -= 9;
                }
                else
                    n = (int.Parse(numero[conta].ToString()));
                acum += n;
        }
        return acum % 10 == 0;
}



En C quedaria así:

#include<stdio.h>
int CVValido(char  *numero);
int main(int argc, char *argv[])
{
    printf("Nº de Tarjeta: %s\n",argv[1]);
    if(CVValido(argv[1]))
      printf("Numero Valido\n");
    else
      printf("Numero Erroneo\n");
   
}
int CVValido(char  *numero)
{
    int conta;
    int acum=0;
    int num=0;
    char temp;
    for(conta=0;conta<strlen(numero);conta++)
    {
        temp=numero[conta];
        if(conta % 2 ==0)
        {
            sscanf(&temp,"%d",&num);
            num*=2;
            if(num>9)
                num-=9;   
        }
        else
            sscanf(&temp,"%d",&num);
        acum+=num;
    }
    return (acum % 10)==0;
}


Ya podeis probar con vuestra tarjeta, vereis que se cumple.


Zoo G7
Noviembre
25
Ya esta el proyecto en marcha. Desde la asignatura de 'Laboratorio de Gráficos y Multimedia' nos han propuesto (con propuesto quiero decir que tenemos que hacerlo si o si) un proyecto multimedia para fin de asignatura.
Este proyecto es de tematica libre, aunque con la limitación de usar 4 programas distintos: Photoshop, Director, 3DS Max y Premiere.
Y bueno, bajo la presión de tener que decidir un tema en 10 minutos, y descartar alguna propuesta, nos decidimos por un Zoo Virtual.

La primera idea de Zoo es una orientación infantil, con connotaciones educativas. Ofrecer la posibilidad de conocer diferentes animales de forma interactiva y divertida.
Y aunque no esta todo atado, las primeras pruebas dan un resultado satisfactorio. Solo nos queda meterle horas y bastante 'caña' al procesador, que los renders pueden ser pesados..

Para seguir el proyecto, tenemos un blog donde se postearan los avances, los problemas, las horas sin dormir... y a pesar de que esto no saldra de la asignatura, se le pondra ganas y esfuerzo, al menos por mi parte.
Esta es la dirección



Del.Icio.Us
Noviembre
8
Para este post, tengo que retroceder en la memoria cerca de 3 años. Fue Elena quien, el primer día de clase nos dio a conocer la web del.icio.us.
Y hoy toca retomarla.
Delicious es una web que se presenta como una forma de guardar y organizar nuestros favoritos, pero de manera online. ¿Qué utilidad tiene esto? Para los que saltamos de un Pc a otro es una maravilla. Podemos acceder, añadir y eliminar nuestros favoritos/marcadores desde cualquier lugar.
Y no solo esto ¿A nadie se le ha olvidado guardarlos antes de formatear su equipo? Esta es una buena solución.
Una vez registrado, Delicious ofrece un plugin para distintos navegadores, que consiste en una barra de herramientas/botones bien integrados en el navegador, con los cuales podemos consultar, añadir y eliminar nuestras Urls favoritas con la misma comodidad con la que añadimos los marcadores/favoritos de toda la vida.
Además, los marcadores se pueden clasificar por tags, e incluso importar los marcadores que tenemos guardados ya en el navegador.
Hasta ahora no había utilizado este servicio debido a que en un principio, las Urls que añadimos son públicas, pero se ve que esto lo han solventado y ahora podemos hacerlas privadas, con lo que nadie pueda acceder a nuestros favoritos.
Aquí tenéis la dirección, podéis registraros totalmente gratis y disfrutar de este servicio. ¡Nunca más a la pérdida de los marcadores!