== ëŠë‚€ì ë° ì„¤ëª… == 오오.. ê·€ì°¨ë‹ˆì¦˜ì´ ê¸€ì—달한 소스여요.ã…Ž ì„ í˜• 리스트로 ë°ì´í„°ë² ì´ìŠ¤ 구축 -> ìžë£Œêµ¬ì¡°ë¥¼ ë°°ì—´ì„ ì‚¬ìš©í•˜ì„¸ìš”~ ë¡œ ì´í•´....OTL ê·¸ë§Žì€ ìžë£Œêµ¬ì¡°ì¤‘ì—ì„œ 왜 ë°°ì—´ì´ëƒê³ 오..ã… .ã…œ 막강한 메모리 ë‚비와 ì˜¤ë²„í”Œë¡œìš°ì˜ í•œê³„ë¥¼ ëŠë¼ê³ ì‹¶ì€ ê²ƒì¸ê°€ì•„..;;ã…;; ë™ì í• ë‹¹ì´ë‚˜ 트리구조로 ì¢€ë” ì´ì˜ê²Œ 만들 수 있었으나.. 시키는 대로 해야지 ë..ã… .ã…œ 그래서 작성. 결과는 아래와 같으며 심지어 idì—ì‹œ 문ìžì—´ë¡œ 처리해서 ë§˜ê» ì ì–´ ë„£ì„ ìˆ˜ 있다. 그결과 ìžë£Œì—ì‹œ ì¼ë°˜ì 으로 시간순서대로 ì €ìž¥í•˜ê¸°ë•Œë¬¸ì— ê²€ìƒ‰ì†ë„는 í‰ë²”..OTL ë˜í•œ 소스ì—ì„œ 보시다시피.. ì˜ì–´ì‹¤ë ¥ì˜ 한계가 마구마구 ëŠê»´ì§€ë©°~ ì—러코드는.. 단순한 장ì‹.. ã…‹ (ëë“ ì§€ 뽀대가 ë‚˜ê³ ë´ì•¼í•¨.ã…Ž) 그럼 ì¢‹ì€ í•˜ë£¨ ë˜ì‹œê¸¸.ã…Ž // 실행해서 ?를 ìž…ë ¥í•˜ë©´ ìž…ë ¥ 가능한 ëª…ë ¹ì–´ë¥¼ ë³¼ 수 있습니다. == 소스 == {{{~cpp #include <stdio.h> #include <string.h> const int MAX_DATA_SIZE=100; const int HANG_MOK=4; const int MAX_MENU=8; const int QUIT=6; const char menu[MAX_MENU][20]={"insert","modify","delete","undelete","search","list","quit","?"}; const char print_outs[HANG_MOK][5]={"id","name","tel","add"}; const int MAX_BLOCK_SIZE=256; const int FALSE=-1; const int ALL=-1; char datas[MAX_DATA_SIZE+1][HANG_MOK][MAX_BLOCK_SIZE]; int how_many_data=0; int prv_del=-1; int select_menu(); void function_insert();void function_modify();void function_delete();void function_undelete();void function_search();void function_list();void function_quit();void function_help(); int such_data(); void print_list(int); void modify_data(int); void print_cursur(); void main() { void (*functions[MAX_MENU])(void)={function_insert,function_modify,function_delete,function_undelete,function_search,function_list,function_quit,function_help}; while (1) { int selected_number=select_menu(); functions[selected_number](); if (QUIT==selected_number) break; } } int select_menu() { char temp_input[20]; while (1) { print_cursur(); scanf("%s",temp_input); for (register int i=0; i<MAX_MENU; ++i) { if (0==strcmp(temp_input,menu[i])) return i; } printf ("ERROR!! - code:00 - Wrong order!!\n"); } } void function_insert() { if (MAX_DATA_SIZE==how_many_data) printf("ERROR!! - code:03 - data overflow!!\n"); else { modify_data(how_many_data); ++how_many_data; } } void function_modify() { int target=such_data(); if (FALSE!=target) modify_data(target); } void function_delete() { int target=such_data(); if (FALSE!=target) { for (register int i=0; i<HANG_MOK; ++i) strcpy(datas[MAX_DATA_SIZE][i],datas[target][i]); for (register int i=target+1; i<how_many_data; ++i) { for (register int j=0; j<HANG_MOK; ++j) strcpy(datas[i-1][j],datas[i][j]); } --how_many_data; prv_del=target; } } void function_undelete() { if (-1==prv_del) printf("ERROR!! - code:02 - Can't find deleted data!!\n"); else { for (register int i=how_many_data-1; prv_del<=i; --i) { for (register int j=0; j<HANG_MOK; ++j) strcpy(datas[i+1][j],datas[i][j]); } for (register int i=0; i<HANG_MOK; ++i) strcpy(datas[prv_del][i],datas[MAX_DATA_SIZE][i]); ++how_many_data; prv_del=-1; } } void function_search() { int target=such_data(); if (FALSE!=target) print_list(target); } void function_list() { print_list(ALL); } void function_quit() { printf ("Goodbye~\n"); } void function_help() { printf("Menu: "); for (register int i=0; i<MAX_MENU; ++i) printf(" %s ",menu[i]); printf("\n"); } int such_data() { int select_number; char temp_data[MAX_BLOCK_SIZE]; printf("select number : "); for (register int i=0; i<HANG_MOK; ++i) printf("%d. %s\t",i,print_outs[i]); printf("\n"); print_cursur(); scanf("%d",&select_number); printf("content? "); scanf("%s",temp_data); for (register int i=0; i<how_many_data; ++i) { if (0==strcmp(temp_data,datas[i][select_number])) return i; } printf("ERROR!! - code:01 - Can't find!!\n"); return FALSE; } void print_list(int number) { for (register int i=0; i<HANG_MOK; ++i) printf("%s\t",print_outs[i]); printf("\n"); if (ALL==number) { for (register int i=0; i<how_many_data; ++i) { for (register int j=0; j<HANG_MOK; ++j) printf("%s\t",datas[i][j]); printf("\n"); } } else { for (register int j=0; j<HANG_MOK; ++j) printf("%s\t",datas[number][j]); printf("\n"); } } void modify_data(int target) { for (register int i=0; i<HANG_MOK; ++i) { printf("%s? ",print_outs[i]); scanf("%s",datas[target][i]); } } void print_cursur() { printf(">>"); } }}} == 나ì—게 í• ë§ == ---- [LittleAOI] [기본ë°ì´í„°ë² ì´ìŠ¤]