본문 바로가기
c언어

c언어 반복문 루프에서 보초 값 사용하기(while문, 성적의 평균 구하기)

by 개발자 L 2022. 12. 4.
반응형

c언어 반복문 루프에서 보초 값 사용하기(while문, 성적의 평균 구하기)

네 안녕하세요, 이번 포스팅에서는 우리가 반복 루프를 사용할 때 보초 값을 사용하는 방법에 대하여 알아보도록 하겠습니다.

보초 값은 다른 말로 센티널이라고도 하는데,

이 보초값은 데이터의 끝을 알리는 값입니다.

그래서 반복 루프를 돌릴 때 끝 값이 존재하지 않으면 무한히 루프를 돌리기 때문에 꼭 필요합니다.

그럼 지금부터 알아보도록 하겠습니다.

 

1. 성적의 평균을 구하는 프로그램으로 보초 값 다루기

이 개념은 우리가 직접 써봐야 바로 이해가 되기 때문에 한 가지 예제를 예로 들어서 설명을 드리겠습니다.

우리가 성적을 구하는 프로그램을 작성하는 순서는 이렇습니다.

  1. 필요한 변수들을 초기화 한다.
  2. 성적을 입력받아 합계를 구하고 성적의 개수를 센다
  3. 평균을 계산하고 화면에 출력한다.

이 순서를 제가 또 잘게 쪼개어 어떤 부분에서 보초 값을 사용하게 되는지 직접 보여드리도록 하겠습니다.

 

1 - 1. 필요한 변수 초기화 하기

우리가 성적의 평균을 구할 때 필요한 변수를 한 번 살펴볼까요?
이러한 변수들을 생각을 할 수가 있겠습니다.

  • score : 성적
  • n : 성적의 개수
  • sum : 성적의 합계
  • avg : 성적의 평균

이렇게 있겠죠?
그리고 여기서 avg를 제외한 모든 값들은 초기값을 주어야 합니다.

그 이유는 avg의 경우는 평균이고, 평균은 성적의 총합을 성적의 개수로 나누어 나오는 값이라서 별개로 취급을 하기 때문입니다.

그래서 avg만 제외를 시키는 것입니다.

그리고 그 초기값은 아무것도 입력이 되지 않았을 때부터 시작을 해야만 하므로 0으로 줍니다.

 

1 - 2. 성적을 입력받아 합계를 구하고 성적의 개수 세기

이제 여기에서 본격적으로 while문을 씁니다.

이 while문을 써서 다수의 성적을 입력받고 계산을 해야 합니다.

그러면 성적의 개수인 n이 누적적으로 증가를 할 때마다 그것을 합칠 수 있고,

이 과정에서 합계가 나오겠죠?

반응형

 

1 - 3. 평균을 계산하고 화면에 출력하기

마지막으로 평균을 계산해줍니다.

그리고 이 과정에서 보초 값이 쓰입니다.

우리가 보초 값은 데이터의 끝을 알리는 값이라고 했죠?

그래서 다시 말하면 그냥 '처리가 끝났습니다.'를 알려주는 장치이기 때문에 실질적인 연산에서는 그냥 브레이크 기능만 해줄 뿐이고, 필요 없는 값입니다.

그래서 그걸 꼭 제일 마지막에 빼줍니다.

그 후에 평균을 구해주고, printf()를 써서 출력을 해줍니다.

그럼 그에 대한 코드를 한 번 써보도록 하겠습니다.

#include <stdio.h>

int main()

{
    int score, n;
    int sum, avg;

    n = 0;
    sum = 0;
    avg = 0;

    printf("종료하려면 음수를 입력하세요.\n");
    
    while(score >= 0)
    {
        printf("성적을 입력하세요 : ");
        scanf("%d", &score);

        sum += score;
        n++;
    }

    sum = sum - score;
    n--;

    avg = sum / n;

    printf("성적의 평균은 %d입니다.\n", avg);

    return 0;
}

이렇게 작성을 했습니다.

그리고 여기 보이는 while문은 범위가 '이상'이기 때문에 무한루프가 돌아가게 됩니다.

그래서 종료가 되는 장치를 걸어야 합니다.

그래서 printf()를 이용하여 음수 입력 시 종료되게 설정을 했습니다.

그리고 루프를 다 돌리고서 제일 마지막에 최종적인 합계를 구할 때 보초 값을 뺐죠?

그것은 우리가 제일 마지막에 입력하게 되는 -1은 필요가 없기 때문에 빼줘야 합니다.

그럼 결과를 한 번 보도록 하겠습니다.

종료하려면 음수를 입력하세요.
성적을 입력하세요 : 40
성적을 입력하세요 : 50
성적을 입력하세요 : 69
성적을 입력하세요 : 30
성적을 입력하세요 : 10
성적을 입력하세요 : 44
성적을 입력하세요 : -1
성적의 평균은 40입니다.

이렇게 잘 나오는 것을 볼 수가 있습니다.

이제 여러분들은 무한루프를 이용하여 프로그램을 다루는 방법에 대하여 알게 되었습니다.

 

여기까지 반복문에서 보초값을 이용하는 방법에 대하여 알아보았습니다.

다음 포스팅에서는 do_while문에 대하여 알아보도록 하겠습니다.

긴 글 읽어주신 독자분들께 진심으로 감사드립니다~

반응형

댓글