Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 프로그램으로 개인용 컴퓨터의 가격 범위와 평균 비용 계산하기

문제 정의

개인용 컴퓨터는 판매 업체에 따라 서로 다른 가격에 판매됩니다.

몇몇 업체가 제시한 가격 목록(단위: 백 원)은 다음과 같습니다.

25.00, 30.50, 15.00, 28.25, 58.15,
37.00, 16.65, 42.00, 68.45, 53.50

해결 방법

주어진 가격 자료로부터 평균 비용과 값의 범위(range)를 계산해야 합니다.

범위란 자료 집합에서 최댓값과 최솟값 사이의 차이를 의미하며, 다음 식으로 구할 수 있습니다.

범위 = 최댓값 − 최솟값

따라서 먼저 자료 전체에서 최댓값과 최솟값을 찾은 뒤, 두 값의 차이로 범위를 구하고 전체 합계를 이용해 평균을 계산하면 됩니다.

C 프로그램 예제

다음은 개인용 컴퓨터의 값 범위와 평균 비용을 계산하는 C 프로그램입니다. 사용자가 양수를 계속 입력하다가 음수를 입력하면 입력이 종료되고 결과가 출력됩니다.

#include<stdio.h>
main(){
    int count;
    float value, high, low, sum, average, range;
    sum = 0;
    count = 0;
    printf("enter no's in line and at end press any negative number\n");
    input:
    scanf("%f", &value);
    if (value < 0)
        goto output;
    count = count + 1;
    if (count == 1)
        high = low = value;
    else if (value > high)
        high = value;
    else if (value < low)
        low = value;
    sum = sum + value;
    goto input;
    output:
    average = sum/count;
    range = high - low;
    printf("\n\n");
    printf("Total values : %d\n", count);
    printf("Highest-value: %f\nLowest-value : %f\n", high, low);
    printf("Range : %f\nAverage : %f\n", range, average);
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Enter numbers in line and at end press any negative number
22.4 56.8 12.3 48.6 31.4 19.0 -1
Total values: 6
Highest-value: 56.799999
Lowest-value: 12.300000
Range: 44.500000
Average: 31.750000

프로그램 동작 원리

  • 입력 단계: scanf() 함수로 값을 하나씩 입력받으며, 음수가 입력되면 goto 문을 통해 출력 단계로 이동합니다.
  • 최댓값·최솟값 갱신: 첫 번째 입력값은 high와 low에 동시에 저장되고, 이후 값들은 현재 high, low와 비교하여 조건에 맞으면 갱신됩니다.
  • 누적 및 계산: 모든 입력값은 sum 변수에 누적되며, 입력이 끝나면 평균(sum ÷ count)과 범위(high − low)를 계산해 화면에 출력합니다.

참고: 부동소수점 오차

실행 결과에서 56.8이 56.799999로 표시되는 이유는 컴퓨터가 실수를 부동소수점 방식으로 근사하여 저장하기 때문입니다. 이는 프로그램의 오류가 아니라 float 자료형의 특성상 나타나는 자연스러운 현상입니다.