C언어 단어 정렬 질문!!

C언어 단어 정렬 질문!!

작성일 2018.11.15댓글 1건
    게시물 수정 , 삭제는 로그인 필요

문제 Counting words in a file (count.c)
입력 데이터에 있는 단어를 빈도와 함께 알파벳순으로(사전 순서) 출력한다. 단어는 
영문자로 이루어진 문자열을 의미한다. 입력 파일에는 단어가 1000개를 넘지 않으며 
단어의 최대 길이는 50 byte이다. 대문자가 포함된 단어는 모두 소문자로 구성된 단어로 
간주한다. 예를 들면, 아래 입력 예시에서 보인 것처럼 my, My, mY, MY 등의 단어는 모두 
소문자 단어 my 의 입력으로 간주한다. 영문자 이외의 문자열은 출력에서 제외한다. 이러한 
조건을 만족시키는 프로그램 count.c를 구현하라. 

입력 예시
 This is my home. 
 My home was built in 1965. 
 The home is old now.


출력 예시
built 1
home 3
in 1
is 2
my 2
now 1
old 1
the 1
this 1
was 1


빠르게 코드를 짜 주실 전문가님들 도와주세요 ㅠㅠ


#c언어 단어 개수 세기 #c언어 단어 #c언어 단어 입력받기 #c언어 단어 출력 #c언어 단어 정렬 #c언어 단어 입력 #c언어 단어 역순 출력 #c언어 단어 길이 #c언어 단어 맞추기 게임 #c언어 단어 찾기

profile_image 익명 작성일 -

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    char *book[1000];
    int freq[1000];
    char word[51];
    int wcnt;
    FILE *fin;
    int i, j, cmp, wlen;
 
    fin = fopen("Text.txt""rt");
 
    wcnt = 0// 등록된 단어 수
    while(1) {
        // 단어 읽기
        i = fscanf(fin, " %50[a-zA-Z]%n", word, &wlen);
 
        // 파일 끝
        if (i == EOF) break;
 
        // 알파벳이 아니면 스킵
        if (i == 0) {
            fscanf(fin, "%*[^a-zA-Z]");
            continue;
        }
 
        // 모두 소문자로 변환
        for (i = 0; word[i] != '\0'; i++) {
            if ('A' <= word[i] && word[i] <= 'Z') {
                word[i] -= 'A' - 'a';
            }
        }
 
        // 단어 등록
        for (i = 0; i < wcnt; i++) {
            cmp = strcmp(book[i], word);
            if (cmp == 0) { // 같은 것이 있음.
                freq[i]++;  // 빈도수만 증가
                break;
            } else if (0 < cmp) { // 없음, 정렬된 위치에 삽입
                for (j = wcnt; i < j; j--) { // 뒤부터 i 까지 뒤로 이동
                    book[j] = book[j - 1];
                    freq[j] = freq[j - 1];
                }
                book[i] = (char *)malloc(sizeof(char)*(wlen + 1));
                strcpy(book[i], word); // i 번째에 새로운 단어 등록
                freq[i] = 1;
                wcnt++;
                break;
            }
        }
        if (i == wcnt) { // 없음, 맨 뒤에 등록
            book[i] = (char *)malloc(sizeof(char)*(wlen + 1));
            strcpy(book[i], word); // i 번째에 새로운 단어 등록
            freq[i] = 1;
            wcnt++;
        }
    }
    fclose(fin);
 
    for (i = 0; i < wcnt; i++) {
        printf("%s %d\n", book[i], freq[i]);
    }
    printf("\n");
 
    for (i = 0; i < wcnt; i++) {
        free(book[i]);
    }
    return 0;
}

c언어 단어정렬 좀..

제가 string 함수 안 쓰고 c언어단어 정렬 프로그램을 짜려고 해서... 궁금증이나 질문사항 있으시다면 쪽지나 메일, 카톡으로...

c언어 질문인데요. 단어 몇개를...

... 우선 최대 8자리 영어 단어 3개를 입력 받습니다. Plesae enter string a with the length... 혹시 질문자께서 정렬 알고리즘을 요구하시는 것이 아니라면 말이죠. 어차피...

c언어 오름차순정렬

안녕하세요ㅜ c공부하다 막히는게 있어서 질문드립니다. 밑에... printf("[word2.0] : 문장에 포함된 단어정렬하여 보여준다....