~cpp #include <iostream> #include <conio.h> using namespace std; const int BACK_SPACE=8; const int CHAR_TO_NUMBER=48; void main() { cout << "주민등록번호를 '-'없이 입력해주세요>>"; int cursur=0; int input_number[13]; while (cursur<13) { char number; number=getche(); if (47<number && number<58) { number-=CHAR_TO_NUMBER; if (12==cursur) { int sum=0; for (register int i=0; i<12; ++i) sum+=input_number[i]; if ((11-sum%11)%10==number) cout << "\n대한민국 국민이네요~ ^^ 안녕하세요!\n"; else cout << "\n혹시 간첩???? -_-;;\n"; } else input_number[cursur]=number*(cursur%8+2); ++cursur; }else if (BACK_SPACE==number) { cout << " \b"; --cursur; } } }
~cpp #include <iostream> #include <conio.h> using namespace std; const int BACK_SPACE=8; const int CHAR_TO_NUMBER=48; void main() { cout << "주민등록번호를 '-'없이 입력해주세요>>"; int cursur=0; int put_num[13]; while (cursur<13) { char number; number=getche(); if (47<number && number<58) { number-=CHAR_TO_NUMBER; if (12==cursur) { int sum=0; for (register int i=0; i<12; ++i) sum+=put_num[i]*(i%8+2);; if ((11-sum%11)%10==number && put_num[2]*10+put_num[3]<13 && put_num[4]*10+put_num[5]<32 && put_num[6]<3) cout << "\n대한민국 국민이네요~ ^^ 안녕하세요!\n"; else cout << "\n혹시 간첩???? -_-;;\n"; } else put_num[cursur]=number; ++cursur; }else if (BACK_SPACE==number) { cout << " \b"; --cursur; } } }
~cpp #include <iostream> #include <conio.h> using namespace std; const int BACK_SPACE=8; const int CHAR_TO_NUMBER=48; void main() { cout << "주민등록번호를 '-'없이 입력해주세요>>"; //안내문을 출력한다. int cursur=0; //현재 커서의 위치를 저장한다. int input_number[13]; while (cursur<13) //13개의 키를 입력받는다. { char number; number=getche(); if (47<number && number<58) //입력받은 값이 숫자인지 확인한다. { number-=CHAR_TO_NUMBER; if (12==cursur)//마지막 값인지를 확인한다. { int sum=0; for (register int i=0; i<12; ++i) sum+=input_number[i]; //숫자를 다 더한다. if ((11-sum%11)%10==number) //올바른 주민번호인지를 확인한다. cout << "\n대한민국 국민이네요~ ^^ 안녕하세요!\n"; else cout << "\n혹시 간첩???? -_-;;\n"; } else input_number[cursur]=number*(cursur%8+2); //알맞은 값을 곱한 숫자를 저장한다. ++cursur; //기억된 커서의 위치를 오른쪽으로 한칸 옮긴다. }else if (BACK_SPACE==number) //입력받은 값이 백스페이스인지 확인한다. { cout << " \b"; //이전 문자열을 삭제한다. --cursur; //기억된 커서의 위치를 왼쪽으로 한칸 옮긴다. } } }
-module(pr_6). -export([checkNum/1]). mulAndSum([], []) -> 0; mulAndSum([FirstOne|RemainOne], [FirstAnother|RemainAnother]) -> FirstOne * FirstAnother + mulAndSum(RemainOne, RemainAnother). sumList([], []) -> []; sumList([FirstOne|RemainOne], [FirstAnother|RemainAnother]) -> [FirstOne + FirstAnother] ++ sumList(RemainOne, RemainAnother). checkNumSub(List) -> 11 - (mulAndSum(List, [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5, 0]) rem 11) == lists:last(List). checkNum(List) -> checkNumSub(sumList(List, lists:duplicate(13, -48))).
62> c(pr_6). {ok,pr_6} 65> c(pr_6). {ok,pr_6} 66> pr_6:checkNum("2222222222222"). false 67> pr_6:checkNum("2222222222223"). false 68> pr_6:checkNum("2222222222224"). false 69> pr_6:checkNum("2222222222225"). true