2016년 6월 8일 수요일

이것이 c언어다. 12장 정렬하기

세 단어를 입력받아, 오름차순으로 정렬하기.


#include <stdio.h>
#include <string.h>

void swapString(char szTemp[], char (*chAWord)[], int nCount);

int main(void)
{
    char chAWord[3][20];
    int nCount = 0;
    int i;

    while(1) 
    {
        printf("enter the voca : ");
        gets(chAWord[nCount]);
        nCount++;
        if(nCount>2)break; //세단어만 입력받을 것이여.

    }
    char szTemp[20]; 


    //오름차순 정렬.
    for(i=0;i<3;i++)
    {
        for(nCount=0;nCount<i;nCount++)
        {
            if (strcmp(chAWord[nCount],chAWord[nCount+1]) == 1)
            {
                swapString(szTemp, chAWord,nCount);
            }
        }
    }
    for(i=0;i<3;i++)
        printf("%s\n",chAWord[i]);

    return 0;
}

void swapString(char szTemp[20], char (*chAWord)[20], int nCount)
{
    strcpy(szTemp ,chAWord[nCount]);
    strcpy(chAWord[nCount], chAWord[nCount+1]);
    strcpy(chAWord[nCount+1], szTemp);

}


정렬부분 함수로 처리해보기.


#include <stdio.h>
#include <string.h>
void sortString(char (*chAWord)[20]);
void swapString(char szTemp[], char (*chAWord)[], int nCount);
int main(void)
{
    char chAWord[3][20];
    int nCount = 0;
    int i;

    while(1)                //단어를 입력받아
    {
        printf("enter the voca : ");
        gets(chAWord[nCount]);
        nCount++;
        if(nCount>2)break; //chAWord[2]까지 저장!
    }
    sortString(chAWord);

    for(i=0;i<3;i++)
        printf("%s\n",chAWord[i]);

    return 0;
}
void sortString(char (*chAWord)[20])
{
    char szTemp[20]; // 문자열을 임시로 저장해둘 문자배열
    int i;
    int nCount;
    for(i=0;i<3;i++)
    {
        for(nCount=0;nCount<i;nCount++)
        {
            if (strcmp(chAWord[nCount],chAWord[nCount+1]) == 1)
            {
                swapString(szTemp, chAWord,nCount);
            }
        }
    }
}

void swapString(char szTemp[20], char (*chAWord)[20], int nCount)
{
    strcpy(szTemp ,chAWord[nCount]);
    strcpy(chAWord[nCount], chAWord[nCount+1]);
    strcpy(chAWord[nCount+1], szTemp);
}



댓글 없음:

댓글 쓰기