#include <stdio.h>
char word[50];
char list[50][50];
int finish(void); //종료할지 말지 결정
void pr(int c); //출력
int list_put(int c); //단어 목록
int search(int a, int c); //단어 목록에 있는 문자인지 검색
int main(void)
{
int c=0, i;
while(1)
{
scanf(" %[^\n]s", word);
if(finish()==1)
break;
c=list_put(c);
pr(c);
for(i=0; word[i]!='\0'; i++) //초기화
word[i]=' ';
word[i]=' ';
}
return 0;
}
int finish(void)
{
if(word[0]=='E' && word[1]=='N' && word[2]=='D' && word[3]=='\0') //스트링 값이 'END'인 경우
return 1;
else
return 0;
}
void pr(int c)
{
int i, j;
for(i=0; i<c; i++)
{
for(j=0; list[i][j]!='\0' && list[i][j]!=' '; j++)
printf("%c", list[i][j]);
printf(" ");
}
printf("\n");
}
int list_put(int c)
{
int i=0, j, a;
for(; word[i]!='\0';)
{
if(word[i]!=' ')
{
a=search(i, c);
if(a==0) //단어 목록에 없는 단어일 경우
{
for(j=0; word[i]!=' ' && word[i]!='\0'; i++, j++)
{
list[c][j]=word[i];
}
list[c++][j]='\0';
i++;
}
else //단어 목록에 있는 단어일 경우
i=a;
}
else
i++;
}
return c;
}
int search(int a, int c)
{
int i, j, an, k;
char aa;
for(i=0; i<c; i++)
{
if(word[a]==list[i][0])
{
an=0;
for(j=0, k=a; list[i][j]!='\0' && word[k]!=' '; j++, k++)
{
if(word[k]!=list[i][j]) //두 문자가 같지 않을 경우
{
an=1;
break;
}
}
aa=word[k];
if(aa=='\0') aa=' ';
if(an==0 && aa==' ' && list[i][j]=='\0')
return k;
}
}
return 0;
}
2018.01.06 12:32
정올 - 실력키우기 - 단어집합(하)(1535)
조회 수 616 추천 수 0 댓글 0