![]() XHost |
Oferim servicii de instalare, configurare si monitorizare servere linux (router, firewall, dns, web, email, baze de date, aplicatii, server de backup, domain controller, share de retea) de la 50 eur / instalare. Pentru detalii accesati site-ul BluePink. |
|S|BBB BB|NN NNNN NNN|C|
|_|____ __|___ _____ ____|_|
: : : :
: : : --> Cifra ce control
: : :
: : --> Numarul contului
: :
: --> Identificatorul emitentului
:
--> Tipul de card sau Major Industry Identifier (MII)
Cifrele de la 7 la (n-1) din codul de card reprezinta identificatorul contului. Lungimea maxima a unui cod de card este de 19 cifre deci lungima maxima a numarului contului este de 12 cifre. Asta inseamna ca fiecare emitent dispune de un trilion de numere de cont posibile.
Pas 1: Se inmulteste fiecare cifra din codul de card cu ponderea sa. Daca un card are un numar par de cifre, prima cifra are o pondere de 2, daca nu, cifra are o pondere de 1. Dupa aceea , ponderile cifrelor alterneaza 1,2,1,2.
Pas 2: Daca orice cifra are o valoare ponderata mai mare decat 9, se scade 9 din valoarea ei.
Pas 3: Se aduna toate valorile ponderate si se calculeaza restul impartirii la 10 (MODULO 10).
Pas 4: Un cod de card este valid daca rezultatul operatiei MODULO 10 este 0.
#include<iostream.h>
#include<string.h>
#include<conio.h>
#include<stdio.h>
int luhn(char *card)
{
int n;
n=strlen(card);
int s;
int tcard;
int i;
int p;
if(n%2==0)
p=2;
else
p=1;
s=0;
for(i=0;i<n;i++)
{
tcard=(card[i]-'0')*p;
if(tcard>9)
tcard-=9;
s+=tcard;
p=3-p;
}
s%=10;
if(s==0)
return 1;
else
return 0;
}
void main()
{
char *cc;
cout<<"\ncititi codul:";gets(cc);
if(strlen(cc)<=19)
{
if(luhn(cc))
cout<<"\ncod valid";
else
cout<<"\ncod invalid";
}
else
cout<<"\nlungime prea mare";
getch();
}