No older revisions available
No older revisions available
소감 ¶
소스가 너무 지저분하다;;;
조만간 소스 살좀 빼야지;;
- 소스 다시 재정렬 해보았는데 뭐 그게그거같긴하다;; 그래도 뭔가 정리되긴한듯;
코딩 - 리팩토링 前 ¶
~cpp #include <stdio.h> #include <string.h> #define TRUE 1 #define FALSE 0 int is_int(char c); void intval(char* from); int main(int argc, char* argv[]) { int i; char jumin[13]; int chk; while(1) { chk=TRUE; printf("주민등록번호 13자리 입력하세요(하이픈 '-' 제외) : "); scanf("%s",jumin); //13자리인지 if(strlen(jumin)!=13) chk=FALSE; //숫자로만 이어져 있는지 for(i=0;i<13;i++) { if(!is_int(jumin[i])) { printf("숫자만 입력해야 합니다\n\n"); chk=FALSE; break; } } //chk true이면 다음으로 넘어감 if(chk) break; } intval(jumin); chk = 0; for(i=0;i<=7;i++) chk += jumin[i] * (i+2); for(i=8;i<=11;i++) chk += jumin[i] * (i-6); chk = 11-chk%11; if(jumin[12]==chk) printf("대한민국 국민이네요~ ^^ 안녕하세요!\n"); else printf("혹시 간첩???? -_-;; \n"); return 0; } int is_int(char c) { int int_c; int_c=(int)c; //숫자 값인지 if(int_c>=48 && int_c<=57) return TRUE; return FALSE; } void intval(char* from) { int i; for(i=0;i<13;i++) { *(from) = (int)*(from++) - 48; } }
코딩 - 리팩토링 後 ¶
~cpp #include <stdio.h> #include <string.h> #define TRUE 1 #define FALSE 0 int is_int(char* c); void intval(char* from); void chk_jumin(char* jumin); int chk_input(char *jumin); int main(int argc, char* argv[]) { char jumin[13]; int chk; while(1) { printf("주민등록번호 13자리 입력하세요(하이픈 '-' 제외) : "); scanf("%s",jumin); chk = chk_input(jumin); // 13자리인지, 숫자로만 구성되어있는지 체크 정상이면 TRUE if(chk) break;//TRUE이면 다음으로 넘어감 } intval(jumin); //주민등록번호를 숫자로 변경 chk_jumin(jumin); //주민등록번호 체크 return 0; } int is_int(char* c) { int int_c, i, chk=TRUE; int_c=(int)*(c++); //숫자 값인지 for(i=0;i<13;i++) { if(!(int_c>=48 && int_c<=57)) chk=FALSE; } return chk; } void intval(char* from) { int i; for(i=0;i<13;i++) { *(from) = (int)*(from++) - 48; } } void chk_jumin(char* jumin) { int i, chk=0; for(i=0;i<=7;i++) chk += *(jumin++) * (i+2); for(i=8;i<=11;i++) chk += *(jumin++) * (i-6); chk = 11-chk%11; if(*jumin==chk) printf("대한민국 국민이네요~ ^^ 안녕하세요!\n"); else printf("혹시 간첩???? -_-;; \n"); } int chk_input(char *jumin) { int chk=TRUE; if(strlen(jumin)!=13) //13자리인지 체크 chk=FALSE; else chk = is_int(jumin); //숫자로만 이어져 있는지 체크 return chk; }