PDA

View Full Version : تشخیص شناسه ملی اشخاص حقوقی



Julias99
یک شنبه 18 آبان 1393, 14:24 عصر
سلام دوستان
تو این لینک نحوه ی تشخیص صحت شناسه ملی اشخاص حقوقی اومده
http://daneshjooyar.glxweb.ir/post/580/0580%7B%7B%20%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C% D8%AA%D9%85%20%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5%20%D8 %B5%D8%AD%D8%AA%20%D8%B4%D9%86%D8%A7%D8%B3%D9%87%2 0%D9%85%D9%84%DB%8C%20%D8%A7%D8%B4%D8%AE%D8%A7%D8% B5%20%D8%AD%D9%82%D9%88%D9%82%DB%8C%20%7D%7D.htm
اما راستش نتونستم با سی شارپ بنویسمش
کسی قبلأ اینو نوشته در اختیار ما هم قرار بده ؟

amirhossein.h
یک شنبه 18 آبان 1393, 17:20 عصر
من تا یه جایی پیش رفتم یکی چک کنه ببینه درسته :)

double s = 0, r; int[] num = {1,0,3,8,0,2,8,4,7,9,0};


int[] zarib = {29,27,23,19,17,29,27,23,19,17};


for (int i = 0; i < 10; i++)
s += (num[i] + 11) * zarib[i];


r = (s % 11 == 10) ? 0 : s % 11;


if (num[10] == r)
Console.WriteLine("is Correct");
else
Console.WriteLine("is not Correct");

khokhan
پنج شنبه 13 آذر 1393, 14:53 عصر
با delphi این شکلیه :لبخند: .net کردنش با خودتون


var L,C,D,S,I : Integer;
flag : Boolean;
begin


flag := (Code = '00000000000') or (code = '11111111111') or (code = '22222222222') or (code = '33333333333');
flag := (Code = '44444444444') or (code = '55555555555') or (code = '66666666666') or (code = '77777777777') or flag;
flag := (Code = '88888888888') or (code = '99999999999') or flag;
if not flag then
begin
if Code = '' then
ShMeli:= False
else
if Length(Code) < 11 then
ShMeli := False
else
begin
C:= StrToInt(Code[11]); // شناسايي رقم كنترل
L:=Length(Code); // محاسبه طول كد
D:= StrToInt(Code[10])+2; /// محاسبه دهگان +2


S := 0; //1- براي محاسبه رقم کنترل از روي ساير ارقام ، هر رقم را با رقم
// دهگان کد +2 کرده و سپس در ضريب آن ضرب مي کنيم و حاصل را با هم جمع مي کنيم.
S := s + ((d+StrToInt(Code[1]))*29);
S := s + ((d+StrToInt(Code[2]))*27);
S := s + ((d+StrToInt(Code[3]))*23);
S := s + ((d+StrToInt(Code[4]))*19);
S := s + ((d+StrToInt(Code[5]))*17);
S := s + ((d+StrToInt(Code[6]))*29);
S := s + ((d+StrToInt(Code[7]))*27);
S := s + ((d+StrToInt(Code[8]))*23);
S := s + ((d+StrToInt(Code[9]))*19);
S := s + ((d+StrToInt(Code[10]))*17);
S := s mod 11; //2- مجموع بدست آمده از مرحله يک را بر 11 تقسيم مي کنيم
if s = 10 then //3- اگر باقيمانده برابر 10 باشد ، باقيمانده را برابر 0 قرار مي دهيم
s := 0
else
if s = c then //4-اگر رقم کنترل برابر باقيمانده باشد شناسه ملي صحيح فرض مي شود
ShMeli := True;
end;
end
else ShMeli := False; //در غير اين صورت شناسه ملي مورد نظر صحيح نمي باشد

rasoolf
پنج شنبه 13 آذر 1393, 15:02 عصر
این کد را امتحان کن به زبان #C هست خودم تست کردم جواب داد


string strcode = textBoxX1.Text; // code shenase melli
int D = int.Parse(strcode[9].ToString()) + 2;
int[] Zarib = new int[] { 29, 27, 23, 19, 17 };
int zc = 0;
int sum = 0;
if (strcode != "00000000000" || strcode != "11111111111" || strcode != "22222222222" ||
strcode != "33333333333" || strcode != "44444444444" || strcode != "55555555555" ||
strcode != "66666666666" || strcode != "77777777777" || strcode != "88888888888" ||
strcode != "99999999999")
{
for (int i = 0; i < strcode.Length - 1; i++)
{
if (zc > 4) zc = 0;
sum += (D + int.Parse(strcode[i].ToString())) * Zarib[zc];
listBox1.Items.Add((D + int.Parse(strcode[i].ToString())) * Zarib[zc]);
zC++‎‎;


}
if (sum % D == int.Parse(strcode[10].ToString()))
{
MessageBox.Show("صحیح است");
}
else
{
MessageBox.Show("صحیح نیست");
}
}
else
{
MessageBox.Show("صحیح نیست");
}

khokhan
پنج شنبه 13 آذر 1393, 15:07 عصر
این هم یه امتحانی بکن ضرر نداره :لبخند:


public static Boolean checkLegalNationalCode(String nationalCode)
{

if (nationalCode.Length < 11 || int.Parse(nationalCode) == 0)
return false;

if (int.Parse(nationalCode.Substring(3, 9)) == 0)
return false;

int c = int.Parse(nationalCode.Substring(10, 11));
int d = int.Parse(nationalCode.Substring(9, 10)) + 2;
int[] z = new int[] { 29, 27, 23, 19, 17 };
int s = 0;

for (byte i = 0; i < 10; i++)
s += (d + int.Parse(nationalCode.Substring(i, i + 1))) * z[i % 5];

s = s % 11;

if (s == 10)
s = 0;

return (c == s);
}