3.22(목) 주민등록번호 법칙

from Study/C언어 2007/03/22 20:33 view 2967
주민등록번호 앞에 6자리는 생년월일 뒷자리의 첫번째는 성별 다음부터는 주민등록번호가 위조된 번호인지 아닌

지 체크하는 일정한 법칙이 있다.

 8 2 0 1 0 1-1 2 3 4 5 6 7(식별변호,CheckSum)
 * * * * * * * * * * * *

(2,3,4,5,6,7,8,9,2,3,4,5)

각 자릿수를 곱한후에 각각의 자리수를 합한뒤. CheckSum ==  11 - (총합 % 11 ) 을 해준다.

int Check_ident(char *ident)

{

        int check_num[13] = { 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5};

        int max = 12;

        int i, sum = 0;

        bool mode = true;

 

        for(i = 0 ; i < max ; i++)

        {

               if( ident[i] == '-' )

               {

                       mode = false;

                       continue;

               }

 

               if( mode  )

                       sum = sum + (ident[i] - '0') * check_num[i];

               else if ( !mode )

               {

                       sum = sum + (ident[i] - '0') * check_num[i-1];

                       max = 13;

               }

        }

        if( ident[max] - '0' == 11 - sum % 11 )           

        {

               gotoxy(10,12);
               printf(
"
입력하신%s() 올바른번호입니다.\n", ident);

               return 0;

        }

        else

        {

               clrscr();

               gotoxy(10,12);
               printf(
"
입력하신%s() 잘못된번호입니다.\n", ident);

               return 1;

        }

}

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다