PDA

View Full Version : سوال: چک کردن کد ملی



طبیب دل
سه شنبه 22 شهریور 1390, 14:17 عصر
با سلام
من می خوام در برنامم روشی پیاده کنم که کد ملی وارد شده توسط کاربر رو بر رسی کنه . آخه شنیدم با جمع و تفریق و یا ضرب و تقسیم اعداد موجود در کد ملی عددی به دست میاد که مشخص میکنه این کد قابل قبول هست یا نه. آیا کسی از این روش چیزی میدونه؟
با تشکر

unknown.unforgiven
سه شنبه 22 شهریور 1390, 14:41 عصر
به این لینک (http://www.aliarash.com/article/codemeli/codemeli.htm) سر بزن

طبیب دل
سه شنبه 22 شهریور 1390, 14:52 عصر
به این لینک (http://www.aliarash.com/article/codemeli/codemeli.htm) سر بزن
ممنون لینک خوبی معرفی کردید
آیا کسی کدش رو نوشته؟ نوشتن کدش فکر نمیکنم کار سختی باشه ولی چون وقتش رو ندارم اگر کسی از دوستان این کار رو انجام داده کدش رو بزاره
با تشکر فراوان

طبیب دل
چهارشنبه 23 شهریور 1390, 15:45 عصر
دوستان یک کد باری تشخیص صحت کد ملی نوشتم البته نمونه کد در همین سایت هم زیاد بود ولی فکر کنم این واسه اعداد تکراری رو هم کنترل می کنه

private bool checkIdMelli(string idMelli)//از اين متد براي صحت کد ملي استفاده مي شود
{
int index=10;//موقعيت مکاني که در اعداد آرايه ضرب ميشود
int mul = 0;//جهت ذخيره حاصل ضرب
int result = 0;//جهت ذخيره جمع حاصل ضرب ها
int mod = 0;//جهت ذخيره باقيمانده
bool check = false;// براي درست يا غلط بودن کد ملي (خروجي تابع)ا
bool equal=true;//براي مقايسه اعداد آرايه
int[] arrIdMelli = new int[10];
int lentgh = idMelli.Length;
try
{
if (idMelli.Length >= 8 && idMelli.Length <= 10)
{
for (int i = index; i > 0; i--)
{
try
{
arrIdMelli[i - 1] = Convert.ToInt16(idMelli.Substring(lentgh - 1, 1));//برداشتن يک به يک اعداد از انتها و قرار دادن در آرايه از انديس 0
lentgh--;
}
catch { }
}
for (int i = 0; i <= 9; i++)// اين حلقه براي مقايسه اعداد استفاده مي شود
{
if (arrIdMelli[i] != arrIdMelli[i + 1])
{
equal = false; break;
}
}
if (!equal)
{
for (int i = 0; i < 9; i++)
{
try
{
mul = arrIdMelli[i] * index;
}
catch { }
index--;
result += mul;
}
mod = result % 11;
if (mod < 2)
{
if (arrIdMelli[9] == mod)
check = true;
}
else if (11 - mod == arrIdMelli[9])
{
check = true;
}
}
}
}
catch{ }
return check;
}

unknown.unforgiven
چهارشنبه 23 شهریور 1390, 16:19 عصر
یه مدل کوتاه ترش :چشمک:
private bool checkCode(string str)
{
Int64 number;
int sum = 0, temp;
Int64.TryParse(str, out number);
if (Math.Log10(number) > 6 && Math.Log10(number) < 10)
{
temp = Convert.ToInt16(number % 10);
number /= 10;
for (int i = 2; i < 11; i++)
{
sum += Convert.ToInt16(i * (number % 10));
number /= 10;
}
if (((sum % 11 < 2) && (sum % 11 == temp)) || ((sum % 11 >= 2) && ((11 - sum % 11) == temp)))
return true;
}
return false;
}

ali***
یک شنبه 26 آذر 1391, 08:31 صبح
با سلام
دوستان کسی میتونه بگه چطوری از کد ملی می توان شهر محل تولد را تشخیص داد
البته الگوریتمش را می دونم فقط نمی دونم چطوری توی برنامه تعیین صحت کد ملی ازش استفاده کنم.
ممنون میشم پاسخ بدید.