2012-10-28 2 views
0
//Program Written By: Andre Chitsaz-zadeh 
//Program Written On: 10/7/12 
//Program calculates book cost for multiple book orders. 
//Program written using multiple functions. 

#include <stdio.h> 
#define SIZE 5 

void inputData(); 
void processingData(float costs[]); 
float costs[5]; 
float sortedCosts[5]; 

int main() 
{ 
    inputData(); 
    processingData(costs); 
} 

void inputData() 
{ 
    int i = 0; 
    printf("\nPlease enter five products costs.\n"); 
    while (i < 5) 
    { 
     scanf("%d", &costs[i]); 
     i = i + 1; 
    } 
} 

void processingData(float costs[]) 
{ 
    int i; 
    int j; 
    float sum = 0.00f; 
    float average = 0.00f; 
    for (i = 0; i < 4; ++i) 
    { 
     int j, min, temp; 
     min = i; 
     for (j = i + 1; j < 5; ++j) 
     if (costs[j] < costs[min]) 
      min = j; 
     temp = costs[i]; 
     costs[i] = costs[min]; 
     costs[min] = temp; 
    } 
    for (i = 0; i < 5; i++) 
     for (j = 0; j < 5; j++) 
     sortedCosts[i] = costs[i]; 

    for (i = 0; i < 5; ++i) 
     sum += costs[i]; 
    average = sum/5; 
    printf("Product Cost Average = %.2f\n", average); 
} 

왜 제품 비용 평균이 0으로 나오나요? 늘어나는만큼 모든 변수가 float로 선언됩니다. 나는 모든 종류의 조합을 시도해 보았고 그것이 작동하지 않는 것 같습니다. 도와 주셔서 정말 고맙습니다.왜 제품 비용 평균이 0으로 나오나요?

+0

로 기록됩니다. 몇 가지 오류가 있습니다. btw가 있습니다 ... – Acorbe

+0

UB가 scanf를 사용하여 계속해서 ... 이봐, 얘들 아, 물어보기 전에 일부 C 표준을 읽지 않니? –

+0

'i <4 '가 맞습니까? –

답변

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

cost[i] 당신의 프로그램이 아닙니다 int 입력 float이다.

%f 변환 지정을 사용하여 float을 읽습니다.

또한

:

temp = costs[i]; 

귀하의 temp 값 유형 int입니다하지만 costs[i] 유형 float이다. 나는 그것이 신중하다고 생각하지 않는다.

+0

감사합니다. 왜 내 평균이 약간 떨어져 있었는지 궁금해서 생각했지만 내 임시 변수로 잡은 실수는 그것을 고쳤습니다! 넌 너무 빨랐어, 고마워! – user1724390

+0

@ user1724390 여러분 환영합니다! – ouah

1

scanf에 "% f"한정자를 사용하면 "% d"이 아닌 부동 소수점을 사용할 수 있습니다.

또한,

#define SIZE 5 

하지만 당신은 당신의 코드가 아니라 크기에 걸쳐 5 개의를 사용합니다. SIZE를 사용하여 버그의 가능성을 줄이십시오.

i = i + 1; 

와 아무 문제 없습니다하지만 훨씬 더 일반적으로 당신이 코드를 달성하기 위해 필요한 게 뭔지 알아요 것이 유용 할 것이다

i++; 
관련 문제