U E D R , A S I H C RSS

주민등�번호확�하기/조현태

C++

�낀�


가게보고 집�왔는� � 가게보러 가야한다..ㅠ.ㅜ
후딱 작성하고 가는 소스~
아��가 주�� 부�해서 달아놓았다.^^
주�� 다니까 조금 너저분해서 �개다 올렸다.^^

//ìœë ¥ë¬¸ìž�ì—´ 센스있다...누가 ìƒ�ê°�한거지?ã…Ž

그런� �야.ㅎㅎㅎ
나 �거 만들고나서 알아챘는�, 귀찮아서 안고쳤�니.. 아무� 없어~!!
혹시 13월� 태어나거나 50�쯤 태어나거나 뒷�리가 7쯤으로 시작하시는분??ㅎㅎㅎ
빨리 다들 고치�구..ㅎㅎㅎ
아 그리고 지금 고친소스�� 문제�� 있다우..ㅎㅎㅎ
�게~ 알아맞춰�..ㅎㅎ(알지만 귀차니즘때문� 안고치고 퀴즈로 내버리는 쎈쑤!ㅎㅎ)

소스

~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; //기억� 커서� 위치를 왼쪽으로 한칸 옮긴다.
		}
	}
}

Erlang

�낀�

2007년 대예언. ROR� 한다는 것보다 Erlang� 한다는 것� � 섹시하게 보� 것�다. (타겟� �당히 다르긴 하지만) -- 김창준 선배님
나 섹시해지는건가 -_ -ㅎ

Erlang� 조금 � �숙해 졌다 -_ -ㅎ



코드

* pr_6.erl
-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))).

* shell
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

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:08
Processing time 0.0078 sec