donchanee

배열 문제 #2. 본문

프로그래밍/C언어

배열 문제 #2.

donchanee 2018. 5. 18. 15:21
728x90

#2. 사용자에게서 4~10사이의 입력받을 정수의 개수, N을 입력 받는다.

- 사용자에게서 정수 N 개를 입력 받아 배열 x[ ]에 저장한다.

- 입력받은 정수를 짝수와 홀수로 구분하여 각각 배열 e[ ], o[ ]에 저장 후 출력하시오. 

- Hint:     변수 j = 배열 e의 원소에 대한 인덱스 저장

변수 k = 배열 o의 원소에 대한 인덱스 저장

- 출력할 것이 없으면 none을 출력하시오. (예시 2를 보시오)


## 나의 풀이


#include <stdio.h>


int main(void){

    int x[10], e[10] = {0}, o[10] = {0};

    int i, j=0, k=0, N; // 변수 선언

    

    scanf("%d", &N);

    for(i=0;i<N;i++) // 배열과 N을 입력받는다.

        scanf("%d", &x[i]);

    for(i=0;i<N;i++) {

        if (x[i]%2==0) // 2로 나누어지면 짝수

            e[i] = x[i];

        if (x[i]%2==1) // 아니면 홀수

            o[i] = x[i];

    }

    printf("Even:\n");

    for(i=0;i<10;i++) {

        if(e[i]!=0) // 0이 아니라면 출력

            printf("%d\n", e[i]);

        else

            j++; // 전부 짝수가 아니면 none을 출력위해

    }

    if (j==10)

        printf("none\n"); // j에 ++를 해주고 10일경우 출력

    printf("Odd:\n");

    for(i=0;i<10;i++) {

        if(o[i]!=0) // 홀수 출력부

            printf("%d\n", o[i]);

        else

            k++; // 마찬가지로 k를 사용

    }

    if (k==10)

        printf("none\n"); // 10일경우 none을 출력

    

    return 0;

}


# 교수님의 풀이


#include <stdio.h>


int main(void){

    

    int x[10], e[10], o[10], i, j=0, k=0, N;

    

    scanf("%d", &N);

    

    for(i = 0; i<N; i++) {

        scanf("%d", &x[i]);

    }

    

    for(i=0;i<N;i++) {

        if (x[i] % 2 == 0) {

            e[j] = x[i];

            j++;

        }

        else {

            o[k] = x[i];

            k++;

        }

    }

    

    printf("Even\n");

    if (j>0) {

        for(i=0;i<j;i++) {

            printf("%d\n", e[i]);

        }

    }

    else {

        printf("none\n");

    }

    printf("Odd\n");

    if (k>0) {

        for(i=0;i<k;i++) {

            printf("%d\n", o[i]);

        }

    }

    else {

        printf("none\n");

    }

    return 0;

}


교수님의 풀이에서는 j와 k의 값을 활용하여 e 배열과 o 배열의 처음부터 값을 입력할 수 있는 부분이 배울 점이다.


여기에서 나는 배열을 전부 0으로 만든 뒤 0이 아닐경우 출력하기로 하였는데, 이는 빈공간을 만들 수 있고, 배열 사이사이에 빈칸이 생긴다는 점에서 단점이다.

'프로그래밍 > C언어' 카테고리의 다른 글

배열 문제 #6.  (0) 2018.05.20
배열 문제 #5.  (0) 2018.05.19
배열 문제 #4.  (0) 2018.05.18
배열 문제 #3  (0) 2018.05.18
배열 문제 #1.  (0) 2018.05.18