Home > Study > C Language > C task > [ex60] 8비트 통신 데이터에 Even Parity 추가하기 (10점)

[ex60] 8비트 통신 데이터에 Even Parity 추가하기 (10점)
Study Language

문제 설명


숫자 1 또는 0 이 공백으로 구분되어 8개가 data 배열에 입력된다.
입력된 값들 중 1의 개수가 홀수개이면 data 배열의 마지막에 1을 1의 개수가 짝수개이면 data 배열의 제일 마지막에 0을 추가한다.
이렇게 데이터의 전체 1의 개수가 짝수가 되게 하는 방식을 even parity 방식이라 부른다.
아래 코드를 사용하되 입출력 코드는 절대 수정할 수 없으며 필요한 변수는 선언하여 사용하면 된다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void main(void)
{
    int data[9];
    int i;

    for(i = 0; i < 8; i++)
    {
        scanf("%d", &data[i]);
    }

    // 코드 구현

    for(i = 0; i < 9; i++)
    {
        printf("%d ", data[i]);
    }
}

입력 예시


1 0 1 1 1 1 0 1

출력 예시


1 0 1 1 1 1 0 1 0

정답 코드


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void main(void)
{
    int data[9];
    int i;

    for(i = 0; i < 8; i++)
    {
        scanf("%d", &data[i]);
    }

    data[8] = 0;

    for(i = 0; i < 8; i++)
    {
        data[8] ^= data[i];
    }

    for(i = 0; i < 9; i++)
    {
        printf("%d ", data[i]);
    }
}

메모


printf 내부의 \n 습관화 필요