프로그램이 무엇을 요구하는지 써주신 말로는 이해하기기 어려워요
음.. 그리고 프로그램은 많은 에러를 포함하고있는데다가 주석이 안달려 있어서 이해를 제대로 했는지 모르겠어요
첨부 파일은 제가 조금 수정해서 올립니다. 완성한 상태는 아니고 참조 하시라고 이렇게 올립니다.
: #include<stdio.h>
: struct Date{
:
: int line;
: };
: char *message[] = {"an empty street empty house",
: " hold in side my heart",
: " Alone room are getting smaller",
: "I wonder why I wonder",
: "I wonder where they are"};
: char *word[5][5] = {"an", "empty", "street", "empty", "house",
: "hold", "in", "side", "my", "heart",
: "Alone", "room", "are", "getting", "smaller",
: "I","wonder", "why", "I", "wonder",
: "I", "wonder", "where", "they", "are"};
// 우선 문자열및문자를 전역으로 선언하셧는데, 함수에 보면 이 문자열을 넘겨주는 인수를 가지고 있네요
// 그럼 1. 전역으로 선언했으니 함수에 전달인자를 가질 필요가 없어요.
// 2. 아니면 메인 함수내에 선언해서 함수에 전달인자로 넘겨주세요.
: struct insertsort( char *[], int);
: struct binarysearch( char *[], char);
// 반화을 단순히 struct 라고만 하셧는데 이는 잘못된 경우 입니다. 확실하게 위에서 선언한 struct Date 라고 해야 합니다.
// struct Date insertsort(char *[], int); 이렇게 되야 합니다.
: int main()
: {
: int i,j;
: char inkey2,message2[5];
: for (i=0; i<5; i++){
: printf ("%s\n", message[i]);
: }
: printf ("\n\n THs is a INDEX.");
: for(j=0; j<25; j++){
: inkey2 = message[i][j];
// inkey2 가 char 인데 이 대입이 가능한지 의문이 값니다.
: struct Data wordindex = binarysearch(char * word[], inkey2)
// 여기서 보면 struct Data 로 변수를 선언한 후 바로 대입을 하셧는데. 이는 struct 사용방법이 잘못되었어요
// 책을 보시고 다시 한번 확인해 보세요.
: printf("%-20s %-5d\n", wordindex.word[j],wordindex,line[j]};
// struct 사용 방법을 다시 확인 하세요.
: }
: /* 이진검색으로 문자, 행 출력*/
: printf("Enter a word:");
: scanf("%s", &inkey[]);
: if (inkey[] =!'#'){
: message2[] = binarysearch( message, inkey);
// 어떤 목적으로 inkey 라는 상수값을 전달인자로 넘겼는지 의미를 모르겠어요
// 그리고 이런식의 대입은 에러를 발생합니다.
// 1. message2[] 가 컴파일시 그 크기가 설정된게 아니라 실행중에 따라 틀려지므로 에러
// 2. 함수 binarysearch 의 반환 형시기 틀립니다. struct Date로 선언했으면 struct Date로 받아야 하죠
: strcp(message2[],message[]);
: printf("%s\n", message2[line]);
: }
: /* 단어 입력 받아서 그 단어 포함된 줄 출력*/
: else if
: printf(" The test is over,Thank you^^");
: /* '#' 입력되면 입력 중지*/
: }
:
: struct binarysearch(char *word2[], key) /* 이진검색*/
: int left, right, mid;
: left = 0;
: right = 4;
: mid = (left + right)/2;
: while( left <= right){
: for (i=0; i<5; ++i){
: if(key == word2[i][mid]){
: line = i+1;
: }
:
: else if (key > word2[i][mid])
: left = mid + 1;
: else
: right = mid -1;
: }
: return(key,line);
: }
:
: struct insertsort (char *s[], int 25) /* 입력받은단어를 사전순으로 배열하는 함수*/
: {
: int i,j;
: char *tmp;
: for (i=1; i<25; i++){
:
: tmp = s[i];
: j = i-1;
: while (j>=0 && strcmp(s[j].tmp)>0){
: s[j+1] = s[j];
: j--;
: }
: s[j+1] = tmp;
: }
: return(s[]);
: }
|