![]() XHost |
Servere virtuale de la 20 eur / luna. Servere dedicate de la 100 eur / luna - servicii de administrare si monitorizare incluse. Colocare servere si echipamente de la 75 eur / luna. Pentru detalii accesati site-ul BluePink. |
Pas preliminar: In cazul in care codul IBAN este prezentat pe suport hartie, se converteste formatul acestuia la formatul electronic prin stergerea spatiilor de separare.
EXEMPLU: un cod IBAN de tipul RO49 AAAA 1B31 0075 9384 0000 devine RO49AAAA1B31007593840000.
Pasul 1: Se muta primele patru caractere (simbolizând codul de tara si caracterele de verificare) la dreapta codului IBAN.
EXEMPLU: RO49AAAA1B31007593840000 devine AAAA1B31007593840000RO49.
Pasul 2: Se face conversia literelor in numere, conform tabelei urmatoare :
A = 10 | G = 16 | M = 22 | S = 28 | Y = 34 | ||||
B = 11 | H = 17 | N = 23 | T = 29 | Z = 35 | ||||
C = 12 | I = 18 | O = 24 | U = 30 | |||||
D = 13 | J = 19 | P = 25 | V = 31 | |||||
E = 14 | K = 20 | Q = 26 | W = 32 | |||||
F = 15 | L = 21 | R = 27 | X = 33 | |||||
EXEMPLU: AAAA1B31007593840000RO49 devine 1010101011131007593840000272449
Pasul 3: Se aplica algoritmul MOD 97-10 (conform ISO 7064). Pentru ca cele 2 caractere de verificare sa fie corecte (codul IBAN sa fie corect), restul impartirii numarului astfel obtinut la 97 trebuie sa fie 1.
EXEMPLU: Restul impartirii lui 1010101011131007593840000272449 la 97 este 1.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
int lungime(char *iban)
{
int i;
for(i=0;iban[i]!=NULL;i++);
return i;
}
void adaug(char el,int poz,char *iban)
{
int i;
int n=lungime(iban);
for(i=n;i>poz;i--)
iban[i]=iban[i-1];
iban[i]=el;
iban[n+1]=NULL;
}
void sterge(int poz,char *iban)
{
int i;
for(i=poz;iban[i+1]!=NULL;i++)
iban[i]=iban[i+1];
iban[i]=NULL;
}
void spatii(char *iban)
{
int i;
for(i=0;iban[i]!=NULL;i++)
if(iban[i]==' ')
{
sterge(i,iban);
}
}
void inlocuire(char *iban)
{
int numar;
int i;
int n=lungime(iban);
for(i=0;iban[i]!=NULL;i++)
{
if(iban[i]>='A' && iban[i]<='Z')
{
numar=(iban[i]-'A')+10;
sterge(i,iban);
adaug(numar%10+'0',i,iban);
adaug(numar/10+'0',i,iban);
n++;
iban[n]=NULL;
}
}
}
int este_iban(char *iban)
{
int i;
for(i=0;i<2;i++)
if(iban[i]<'A' || iban[i]>'Z')
return 0;
while(i<4)
{
if(iban[i]<'0' || iban[i]>'9')
return 0;
i++;
}
while(i<8)
{
if(iban[i]<'A' || iban[i]>'Z')
return 0;
i++;
}
while(iban[i]!=NULL)
{
if((iban[i]<'A' || iban[i]>'Z')&&(iban[i]<'0'|| iban[i]>'9'))
return 0;
i++;
}
return 1;
}
int mod10n97(int n)
{
int i;
int zece=1;
for(i=0;i<n;i++)
zece=(zece*10)%97;
return zece;
}
int mod1097(char *iban)
{
int i;
int s=0;
int n=lungime(iban);
for(i=0;i<n;i++)
{
s=(s+mod10n97(n-1-i)*(iban[i]-'0'))%97;
}
return s;
}
void muta4(char *iban)
{
int i;
int n=lungime(iban);
for(i=0;i<4;i++)
{
adaug(iban[0],n,iban);
sterge(0,iban);
}
iban[n]=NULL;
}
int validare(char *iban)
{
muta4(iban);
inlocuire(iban);
if(mod1097(iban)==1)
return 1;
else
return 0;
}
void main()
{
char *iban;
cout<<"\niban=";gets(iban);
spatii(iban);
if(este_iban(iban))
{
if(validare(iban))
{
cout<<"\ncodul iban este valid";
}
else
{
cout<<"\ncodul iban nu este valid";
}
}
else
cout<<"\ncodul introdus nu este de tip iban";
getch();
}