środa, 28 października 2009

Sprawdzenie poprawności numeru ISSN


BOOL CheckISSN( CString szISSN)
{
BOOL bReturn = FALSE;
int nCyfra;
int nSuma = 0;
int nMod = 0;
int nCheck;
int i;

if (szISSN.GetLength()==9) {

if (szISSN.GetAt(4)=='-') {
for (i=0 ;i<8 ; i++) { if (i!=4) { nCyfra = stoi (szISSN.GetAt(i)); if ((nCyfra<0)||(nCyfra>9)) return FALSE;
}
}

if (szISSN.GetAt(8)!='X') {
nCyfra = stoi (szISSN.GetAt(8));
if ((nCyfra<0)||(nCyfra>9)) return FALSE;
nCheck = nCyfra;
} else nCheck = 10;

nCyfra = stoi (szISSN.GetAt(0));
nSuma += nCyfra*8;
nCyfra = stoi (szISSN.GetAt(1));
nSuma += nCyfra*7;
nCyfra = stoi (szISSN.GetAt(2));
nSuma += nCyfra*6;
nCyfra = stoi (szISSN.GetAt(3));
nSuma += nCyfra*5;
nCyfra = stoi (szISSN.GetAt(5));
nSuma += nCyfra*4;
nCyfra = stoi (szISSN.GetAt(6));
nSuma += nCyfra*3;
nCyfra = stoi (szISSN.GetAt(7));
nSuma += nCyfra*2;

nMod = nSuma % 11;

if ( (11 - nMod) == nCheck ) bReturn = TRUE;
}
}

return bReturn;
}

Brak komentarzy:

Prześlij komentarz