Takodje, na vise foruma, pa i na ovom, daju se primjeri da postoje lica sa neispravno dodijeljenim JMBG-ovima???
Takodje sam saznao, ne znam da li je to tacno, da su recimo, izbjeglicama u Srbiji, prilikom dodjele drzavljanstva greskom dodjeljivana dva ili vise JMBG-ova (kazem, ne znam da li je to 100% tacno).
Postavlja se pitanje ako je sve ovo tacno, da li je algoritam koji sam primijenio validan? Ima li neko sa slicnim iskustvima?
Znaci, primarno me interesuje zasto primjeri brojeva: 8888888888888 i/ili 9999999999999 prolaze validacioni algoritam (sa porukom: "Unijeti maticni broj je ISPRAVAN !(razlika=kontrolna cifra))"??? Da li sam napravio neku gresku u kodu?
Evo i koda (C#):
if (textBox1.TextLength == 13)
{
string pom = textBox1.Text;
char[] niz = pom.ToCharArray(0, 13);
// mrzilo me da pisem for petlju ...
int zbir = 7 * (Convert.ToInt32(niz[0] - 0x30) + Convert.ToInt32(niz[6] - 0x30));
zbir += 6 * (Convert.ToInt32(niz[1] - 0x30) + Convert.ToInt32(niz[7] - 0x30));
zbir += 5 * (Convert.ToInt32(niz[2] - 0x30) + Convert.ToInt32(niz[8] - 0x30));
zbir += 4 * (Convert.ToInt32(niz[3] - 0x30) + Convert.ToInt32(niz[9] - 0x30));
zbir += 3 * (Convert.ToInt32(niz[4] - 0x30) + Convert.ToInt32(niz[10] - 0x30));
zbir += 2 * (Convert.ToInt32(niz[5] - 0x30) + Convert.ToInt32(niz[11] - 0x30));
int ostatak = zbir % 11;
int razlika = 11 - ostatak;
if (ostatak == 1)// ako je ostatak 1, JMBG je POGRESAN
{
MessageBox.Show("Unijeti maticni broj NIJE ispravan ! (Ostatak=1)");
textBox1.Clear();
textBox1.Focus();
}
else if (ostatak == 0)
{
if (Convert.ToInt32(niz[12] - 0x30).Equals(0))
{
MessageBox.Show("Unijeti maticni broj je ISPRAVAN !(ostatak=0,kontrolna cifra=0)");
textBox1.Clear();
textBox1.Focus();
}
else
{
MessageBox.Show("Unijeti maticni broj NIJE ispravan !(ostatak=0,kontrolna cifra!=0)");
textBox1.Clear();
textBox1.Focus();
}
}
else if ( razlika == (niz[12] - 0x30))
{
MessageBox.Show("Unijeti maticni broj je ISPRAVAN !(razlika=kontrolna cifra)");
textBox1.Clear();
textBox1.Focus();
}
else
{
MessageBox.Show("Unijeti maticni broj NIJE ispravan !(razlika!=kontrolna cifra)");
textBox1.Clear();
textBox1.Focus();
}
}