בולנט - דברים מיוחדים...     פרוטו - בניית אתרים

Israeli ASP Organization

ארגון ה-ASP הישראלי

מאמרים/דוגמאות קוד
קישורים
ספרות
חיפוש כללי:

חפש!
כלליHTMLASPASP.NETSQLמסדי נתוניםJavaScriptXML * XSLDHTML * CSSעיצוב וגרפיקהשרתיםComponentsפרסום ושיווקקידום אתריםקופירייטינגPHP
פרסומת
דף ראשי מדורים דרושים הרשמה למועדון אודותינו צור קשר
מיקום: מאמרים ודוגמאות קוד > JavaScript

בדיקת תקינות מספר תעודת זהות

 

הפונקצית JavaScript הבאה מקבלת מספר תעודת זהות ומחזירה true אם המספר הוא מספר תעודת זהות תקין והודעת שגיאה ו false אם המספר אינו מספר תעודת זהות תקין.

 

הסבר אלגוריתם
  
מספר תעודת זהות ישראלית הוא מספר שניתן לכל אזרח ישראלי ביום לידתו או עלייתו ארצה. מספר זה הוא מספר חד חד ערכי, וכל אדם במדינת ישראל מחזיק במספר יחודי, חד חד ערכי, שאינו ניתן לאדם אחר מלבדו.

בעבר, לפני עידן המחשב, מספר תעודת הזהות היה מספר ללא סיפרת ביקורת, ולפעמים הדבר גרר טעויות רישום, כאשר ברישום המספר התבלבלו בספרה בודדת מתוך מספר תעודת הזהות וגרמו למסכן אקראי לשלם את המחיר של הטעות.

כאשר נכנס עידן המחשב למשרדי הממשלה ולמשרד הפנים בפרט, היה צורך למנוע טעויות הקלדה של מספר תעודת הזהות. לשם כך נוצרה סיפרת הביקורת, סיפרה שיושבת בצד ימין של המספר, ומייצגת תוצאה של אלגוריתם חישובי כלשהו. כאשר נוצרת טעות הקלדה, מתריעה על כך תוכנית המחשב והמספר המוקלד מתוקן בהתאם.

אלגוריתם: בדיקת תקינות של סיפרת הביקורת

א. רושמים את מספר תעודת הזהות ב 9 ספרות, כאשר אם מספר תעודת הזהות הינו פחות מ 9 ספרות, משלימים אפסים מובילים בצד שמאל של המספר
0 1 2 3 4 5 6 7 4

ב. מתחת לכל סיפרה של מספר תעודת הזהות, רושמים החל מצד ימין של המספר את הספרות 1, אחר כך 2, אחר כך שוב 1, אחר כך שוב 2 וחוזר חלילה עד לסיום. מספרים אלו נקראים משקלים.
0 1 2 3 4 5 6 7 4
1 2 1 2 1 2 1 2 1

ג. מכפילים בכפל מקוצר, ללא נשא כל סיפרה במספר תעודת הזהות עם הסיפרה מתחתיה (המשקל). את התוצאה, גם אם היא היא בשני ספרות, רושמים מתחת בשורה שלישית.
0 1 2 3 4 5 6 7 4
1 2 1 2 1 2 1 2 1
0 2 2 6 4 10 6 14 4

ד. את התוצאות הופכים לתוצאות של סיפרה אחת. למשל, אם תוצאה כלשהי היא מספר דו סיפרתי, מחברים את כל ספרות המספר לספרה אחת. למשל, את התוצאה 14 מחברים כ 4 ועוד 1, ומקבלים 5. את התוצאה 10 מחברים כ 1 ועוד 0 ומקבלים 1. את כל התוצאות רושמים בשורה רביעית.
0 1 2 3 4 5 6 7 4
1 2 1 2 1 2 1 2 1
0 2 2 6 4 10 6 14 4
0 2 2 6 4 1 6 5 4

ה. כעת, מחברים את כל הספרות בחיבור חשבוני פשוט עד לקבלת תוצאה. התוצאה חייבת להיות מספר המתחלק ב 10 ללא שארית, כלומר שסיפרת האחדות שלו היא 0.
0 1 2 3 4 5 6 7 4
1 2 1 2 1 2 1 2 1
0 2 2 6 4 10 6 14 4
0 2 2 6 4 1 6 5 4

0+2+2+6+4+1+6+5+4 = 30

ו. תוצאה שאינה מתחלקת ב 10 ללא שארית, מורה על מספר כלשהו שגוי בתוך מספר תעודת הזיהוי (הקלדת לא נכונה למשל). תוצאה שמתחלקת ב 10 ללא שארית מורה על מספר תעודת זהות תקין.

 

 

והכי חשוב... הקוד:

function checkidnum(idnum){ while (idnum.length<9){ idnum="0"+idnum; } idnum1=idnum.substr(0,1)*1; idnum2=idnum.substr(1,1)*2; idnum3=idnum.substr(2,1)*1; idnum4=idnum.substr(3,1)*2; idnum5=idnum.substr(4,1)*1; idnum6=idnum.substr(5,1)*2; idnum7=idnum.substr(6,1)*1; idnum8=idnum.substr(7,1)*2; idnum9=idnum.substr(8,1)*1; if (idnum1>9) idnum1=(idnum1%10)+1 if (idnum2>9) idnum2=(idnum2%10)+1 if (idnum3>9) idnum3=(idnum3%10)+1 if (idnum4>9) idnum4=(idnum4%10)+1 if (idnum5>9) idnum5=(idnum5%10)+1 if (idnum6>9) idnum6=(idnum6%10)+1 if (idnum7>9) idnum7=(idnum7%10)+1 if (idnum8>9) idnum8=(idnum8%10)+1 if (idnum9>9) idnum9=(idnum9%10)+1 var sumval=idnum1+idnum2+idnum3+idnum4+idnum5+idnum6+idnum7+idnum8+idnum9; sumval=sumval%10 if (sumval>0){ alert("תעודת הזהות שגוייה"); return false; } return true; }

התגובות שלכם

         
01. 26/06/2005  קעדאן
התחלה נכונה אבל התוצאה אינה נכונה ..
התוצאה הסופית במפונקציה שלך חייבת להיות זהה לספרת הביקורת בתעודת הזהות(ספרה ראשונה מצד ימין)
למשל
בסיכום מכפלות הספרות ( *1 *2 ) אם
התוצאה היא 34 אז ספרת הביקורת בת"ז אמורה להיות שווה ל 4.
במקרה של הדוגמא שלך 30 , ספרת הביקורת היא 0 ..
תודה רבה

02. 12/07/2005  מופנה ל"קעדאן"
אתה טועה. ספרת הביקורת משלימה למספר שלם ולכן אם התוצאה היא 34 אז ספרת הביקורת היא 6, ואם יוצא 30 אז ספרת הביקורת היא באמת 0.

03. 23/10/2005  יוסי
שלום,
כולכם צודקים וגם טועים...
מספר זהות בן 9 ספרות - הוא כבר כולל את ספרת הביקורת, ולכן הפונקציה לבדיקתו - תקינה.
כאשר חסרה ספרת ביקורת (יש רק 8 ספרות שמאליות) ורוצים לחשבה - המספר החסר הוא המשלים ל-10 בתוצאת החישוב לפי אותה שיטה (ספרת הביקורת נכפלת ב-1, ולכן, בלעדיה היא תהיה המספר החסר להשלמה לעשרת הקרובה...)
מקווה שעזרתי.

04. 11/09/2005  שירן מבורך
שלום
למיטב ידיעתי פונקצייה זו עובדת כראוי מוטמעת בכמה מערכות שכתבתי
תוצאת הפרמטר הסופי לבדיקת תעודת הזהות חייב להיות 0 ולא תעודת הזהות שגוייה.
מקווה שעזרתי בפונקצייה זו.

05. 12/01/2006  שמואל
שמעתי שיש מפתח מאחורי המספרים וניתן ללמוד מהם על מין, עולים או ותיקים ועוד פרמטרים. האם מישהו יודע?

06. 16/02/2006  אבי
פעם אפשר היה באתר הר"מ למצא את ספרת הביקורת של תעודת הזהות היום הוא כבר לא עובד. אולי יש למישהוא אתר אחר או יודע למה זה כבר לא עובד ?
http://ancientdust.topcities.com/bikorton.html

         

מחבר: שירן מבורךרמת קושי: 1  ||  ציון: (5.96)כל הזכויות שמורות ל-IAO ©

חנות לסטלן  |   מתכונים  |   חגי ישראל  |   פורטל משחקים  |   חנויות מחשבים ו-ציוד הקפי  |   מגזין מסטול לסטלן המצוי  |   קליפרים  |   גידול צמחים פרחים  |   ספא פינוק מושלם