이슈 자유·수다 게시판 글쓰기 게시판 즐겨찾기

c 언어 질문좀 드릴게요 ~

StuGlll

14.12.05 13:29:39추천 0조회 2,823

 141775375029819.jpg


#include <stdio.h> 


#include <ctype.h> 
char High_Freq(int Letter[]);  
int main(void) {         int Letter[26]={0,};
    char kmg[777];
    int x; 
 
    printf("줄당 80글자 미만의 여러 줄로 구성된다.:\n"); 
    gets(kmg);     for(x=0;kmg[x]!=0;x+=1) {

        if(isalpha(kmg[x])) {

            if(isupper(kmg[x])) {

                kmg[x]= kmg[x]+32;
            }

            Letter[kmg[x]-'a']+=1;
        }
    }
    printf("\n대문자를 소문자로 바꾼 결과:\n");
    puts(kmg);    
    printf("가장 사용 빈도가 높은 글자는 문자형은 %c 입니다.\n", High_Freq(Letter));
    return 0;
}
char High_Freq(int Letter[]) {    int x, max_y, max_z;



    max_y=0; 
    max_z=Letter[0];
    for(x=1;x<26;x+=1) {
        if(Letter[x]>max_z) {
            max_z=Letter[x];
            max_y=x;
        }
    }
 
    return 'a'+max_y;
}
c언어 공부중인데요 위에서 빨간색으로 입력된 부분이 잘 이해가 안되네요
빨간색 내용 풀이좀 부탁드립니다 꾸벅 ㅠㅠ

부씌맨 14.12.05 13:36:12

블랙뷰 좋네 ㅎㅎ

神風朴氏 14.12.05 13:53:58

가장많이 나온 알파벳을 뽑아내는 함수네요

kmg에 아무 문장을 입력받고

그 다음 for문에서
kmg에서 알파벳이 나오면 어떤 알파벳이 몇번 나왔는지 Letter에 갯수를 입력합니다.
그리고 대문자를 모두 소문자로 바꾸죠

이 for문 이후에는
Letter[0~31]까지 Letter[0]부터 각각 a,b,c,d,e...의 알파벳이 몇번 들어가는지 저장이 됩니다.

그럼 High_Freq() 함수에서는 Letter중에 가장 큰 값이 있는 index를 골라내죠
그것을 max_y에 넣어둡니다.
만약 kmg의 문자에서 'a'가 제일 많이 나왔으면 Letter[0] 이니 0을 찾아내겟네요
max_y=0;
인 상태가 되고

그리고 마지막 return에서 'a'+max_y; 이니까

가장 많이 나온 알파벳을 char형으로 리턴해버립니다. 'a'+0 은 'a'니까 'a'를 바로 리턴하는거죠

StuGlll 14.12.05 18:23:30

감사합니다 공부하는데 많은 도움이 되었어요 ~

철이스~ 14.12.05 19:40:39

와..진짜 이런거 하시는분들 대단...
사진첨부
목록 윗 글 아랫 글
*/?>