2012-12-04 3 views
-1

함수에서 배열을 전달하려고합니다. 합 당신은 당신이 CalcAvg의 합으로 계산 값으로 sum 변수를 할당 할 필요가 0배열을 사용하여 함수 호출

/ 

void CalcAvg(int tests[], int numTests, float& avg) 

{ 

    int sum=0; 
    for (int i = 0; i < numTests; i++) 
    { 
     sum = sum + tests[i]; 
    } 
avg = (float)sum/numTests; 
} 
+3

0으로 설정 한 후 값을 수정하지 않았습니다. 그 외에 무엇을 기대합니까? – ildjarn

+1

CalcAvg의 정의 내에서 "sum"이라는 이름이 main 정의 내에서 "sum"과 관계가 있다고 가정합니다. 그렇지 않습니다. –

답변

2

로 반환되는

#include <iostream> 
using namespace std; 
//prototype (fixed to return the sum) 
int CalcAvg(int tests[], int numTests, float& avg); 

int main() 
{ 

    int tests[6]; //array declaration 
    float avg; 
    int sum=0; 

    //input test scores 
    cout<<"Enter"<<6<<"test scores:"<<endl; 
    for (int i=0; i<6; i++) 
    { 
     cout<<"enter Test"<<i+1<<":"; 
     cin>>tests[i]; 
    } 

    //2.print first test score 

    cout<<tests[0]<<endl; 

    //3.print the last test score 

    cout<<tests[5]<<endl; 

    //4.print all test scores 

    for(int i=0; i<6; i++) 
    { 
     cout<<tests[i]<<endl; 
    } 

    //7. Calculate Sum & Avg using function 

    sum = CalcAvg (tests, 6, avg); 

    cout<<"Your sum is"<<sum<<" and your average is "<<avg<<endl; 

return 0; 
} 

int CalcAvg(int tests[], int numTests, float& avg) 

{ 

    int sum=0; 
    for (int i = 0; i < numTests; i++) 
    { 
     sum = sum + tests[i]; 
    } 
avg = (float)sum/numTests; 
return sum; 
} 
4
void CalcAvg(int tests[], int numTests, float& avg) 
(나는 합계를 반환하기 위해 CalcAvg FUNC를 변경)

이 함수의 합계는 로컬로 선언됩니다. 당신은 평균과 같이 참고 자료로 총계를 취하기 위해 함수를 변경해야합니다.

void CalcAvg(int tests[], int numTests, float& avg, int& sum) 

또는 다음과 같이 합계를 반환하도록 CalcAvg 함수를 변경하십시오.

int CalcAvg(int tests[], int numTests, float& avg) 
{ 
    int sum=0; 
    for (int i = 0; i < numTests; i++) 
    { 
     sum = sum + tests[i]; 
    } 
    avg = (float)sum/numTests; 
    return sum; 
} 

그런 다음 주요 설정 합 동일 CalcAvg

int main(){ 
    ... 
    sum = CalcAvg (tests, 6, avg); 
2

에이 CalcAvg의 sum 메인에서 sum 분리되어 있음을 "범위"

주의의 문제처럼 보인다. cout<<"Enter"<<6<<"test scores:"<<endl; 당신이 함수 내에서 합계를 declered cout<<"Enter 6 test scores:"<<endl;

의 insted 사용하는 이유

0

처음 당신을 요청해야합니다. ic C++은 함수에 변수를 만들고 함수의 끝에 destroyes입니다. main 함수 내에서 선언 한 sum이 CalcAvg 함수를 통해 변경되었다고 생각하십니까? 이렇게하려면 main()에서 선언 한 값을 변경하려는 경우 함수에서 sum에 대한 포인터를 재사용해야합니다.

또는 return statment를 사용하여 CalcAvg 함수 내에서 합계를 반환하십시오.

0

포인터를 사용하여 함수에서 값을 변경하는 방법을 알아 보려면이 예제를 참조하십시오.

main(){ 
    int x=5;  
    change(&x); 
    cout<<x; 
    } 

void change(int *p){ 
    *p=10; 
    }