2010년 4월 17일 토요일

문자를 20개 입력받고 출력,검색,삭제 하는 프로그램

#include
#include
#include //getch() 쓰기위해
#include // cls쓰기위해

char menu();
void input(char word[20][80], int *);
void output(char word[20][80],int *);
void search(char word[20][80],int *);
void del(char word[20][80],int *);

void main()
{
char word[20][80]; //입력된 문자열 저장 배열
char menuNumber; //menu함수 return값
int wordcount = 0; //문자열수 카운터 변수

while(1){

system("cls");
menuNumber = menu(); //menu() return 값 저장 변수

/* 함수 호출 (각함수에 문자열 저장 배열과 카운터변수를 넘겨줌)*/

if(menuNumber == '1'){ system("cls"); input(word,&wordcount);}

else if(menuNumber == '2'){system("cls"); output(word,&wordcount); }

else if(menuNumber == '3'){system("cls"); search(word,&wordcount); }

else if(menuNumber == '4'){system("cls"); del(word,&wordcount); }

else if(menuNumber == '5'){ break;}

}
}

char menu() //메뉴 출력
{
printf("\n\n\n\n\n\n");
printf(" 1. 입력하기 \n\n");
printf(" 2. 출력하기 \n\n");
printf(" 3. 검색하기 \n\n");
printf(" 4. 삭제하기 \n\n");
printf(" 5. 종 료 \n\n");

printf(" # 메뉴를 선택하세요 : ");

char menuNumber=getchar();

return menuNumber; //입력받은 메뉴 번호 return

}

void input(char w[20][80],int *i){
/*
printf("\n\n\n\n\n\n\n\n\n\n\n");
printf(" 1번 입력하기 메뉴입니다. \n\n\n\n\n");
printf(" # 아무키나 누르면 주메뉴로 돌아갑니다. \n\n\n\n");

getch();
*/
char temp[80]={0,}; //임시 저장공간

while (strcmp(temp,"end") != 0){ //입력문자열이 "end" 아닐경우까지 반복

if((*i)>19){
printf("제한된 20개의 단어를 입력하셨습니다. 더이상 저장할수없습니다. \n");
printf("##아무키나 누르면 주메뉴로 돌아갑니다.");
getch();
break;
}

printf("#영문 단어를 입력하세요 : "); //단어 입력 받기
scanf("%s",temp);

if(strcmp(temp,"end") != 0){ // end는 입력 문자열이아니기때문에 그것을 제외하고 저장배열에 복사
strcpy(w[*i],temp);
++(*i); // 열 카운터 변수 증가
}

}

return;
}
void output(char word[20][80],int *i){
/*
printf("\n\n\n\n\n\n\n\n\n\n\n");
printf(" 2번 출력하기 메뉴입니다. \n\n\n\n\n");
printf(" # 아무키나 누르면 주메뉴로 돌아갑니다. \n\n\n\n");

getch();
*/
int j,k,size;

for(j=0; j<(*i) ; j++){

printf(" 단어 %2d : ",j+1);
size = strlen(word[j]); //문자열의 문자를 10개씩 끊어 찍기위해 크기를 구함

for(k=0 ; k<=size ; k++){
if(k==10){printf("\n"); printf(" ");} //10씩 끊어 출력 개행후 들여쓰기
printf("%c",word[j][k]); //각 문자열을 문자로 이어어서 출력 10개씩 끊어 찍을려고
}

printf("\n");
}
printf("##입력하신 문자열 출력이 끝났습니다. 아무키나 누르면 주메뉴로 돌아갑니다");
getch();

return;
}
void search(char word[20][80],int *i){
/*
printf("\n\n\n\n\n\n\n\n\n\n\n");
printf(" 3번 검색하기 메뉴입니다. \n\n\n\n\n");
printf(" # 아무키나 누르면 주메뉴로 돌아갑니다. \n\n\n\n");

getch();
*/
char temp[80]={0,}; //입력받을 문자열 공간
int j,temp1=0; //검색시 전체를 검색하기때문에 출력시 오류 방지를 위해
//같은문자열이 확실히없다는것을 보여주기위한 temp1 변수 선언
while (strcmp(temp,"end") != 0){ //입력문자열이 "end" 아닐경우까지 반복

printf("# 찾는 단어를 입력하세요 : ");
scanf("%s",temp); //단어 입력

for(j=0; j<(*i) ; j++){

if(strcmp(temp,word[j]) == 0){ //같은 문자열을 찾는다.
printf("@ %s 문자열은 %d번째 문자열입니다. \n",temp,j+1);
temp1++; //같은문자열이 있으면 temp1증가
}
}

if(temp1 == 0){ printf("@ %s 문자열은 존재하지 않습니다. \n",temp);}

temp1 = 0; //temp1이 증가되지않으면 아에 그문자열이없는것 반복을 돌아야대기때문에 다시 0으로 초기화
}

return;

}
void del(char word[20][80],int *i){

/*
printf("\n\n\n\n\n\n\n\n\n\n\n");
printf(" 4번 삭제하기 메뉴입니다. \n\n\n\n\n");
printf(" # 아무키나 누르면 주메뉴로 돌아갑니다. \n\n\n\n");

getch();
*/

char temp[80]={0,}; //입력받을 문자열 공간

int j,k,temp1=0;

while (strcmp(temp,"end") != 0){

printf("# 삭제할 단어를 입력하세요 : ");
scanf("%s",temp);

for(j=0; j<(*i) ; j++){

if(strcmp(temp,word[j]) == 0){ //삭제할 단어 발견했으면
temp1++;
printf("#정말로 삭제 하시겠습니까? (Y/N) : "); //진짜 정말 삭제할지 물어봄

if(getche()=='Y'){ //삭제하겠다고 하면 누르는 즉시 삭제

for(k=j ; k<(*i) ; k++){
strcpy(word[k],word[k+1]); //그 삭제 위치밑 열을 다 한칸씩 끌어올림
}
--(*i); //문자열 카운터 변수 감소 이러면 다음에 누적대서 입력 받을수 있다.
printf("\n@ 삭제되었습니다. \n");
}

else{ //Y가아닌게 입력댈때 삭제취소
printf("\n@ 삭제가 취소되었습니다. \n");
}
}
}

if(temp1 == 0){ printf("@ %s 문자열은 존재하지 않습니다. \n",temp);}

temp1 = 0; //temp1이 증가되지않으면 아에 그문자열이없는것 반복을 돌아야대기때문에 다시 0으로 초기화
}

return;
}

댓글 없음:

댓글 쓰기