2011-04-21 5 views
1

프로그램을 실행하면 평균이 나오지만 루프가 발생하지 않습니다! 아무도 내가 뭘 잘못 확인하고 while() 루프 후 세미콜론이 올바른 방향루프가 작동하지 않습니다.

#include <iostream> 
#include <iomanip> using namespace std; 

//function prototypes 

void getTestScores(double &score1, double &score2, double &score3); 
double calcAverage(double &score1, double &score2, double &score3); 
void displayAverage(double avg); 

int main() 
{ 
    //declare variables 
    double score1 = 0.0; 
    double score2 =0.0;  
    double score3 = 0.0; 
    double avg = 0.0; 

    //display average in fixed-point notation 
    getTestScores(score1,score2,score3);  
    calcAverage(avg); 
    displayAverage(avg); 

    //enter scores 
    while (avg != -1); 
    { 
     cout << "score 1 (negative number to stop): "; 
     cin >> score1; 
     cout << "Enter score 2(negative number to stop): "; 
     cin >> score2; 
     cout << "Enter score 3(negative number to stop): "; 
     cin >> score3; 

     calcAverage(score1, score2, score3); 
     displayAverage(avg); 

     return 0; 
    } 
} //end of main function 

//*****function prototypes***** 
void getTestScores(double &score1, double &score2, double &score3) 
{ 
    cout << "Enter score 1(negative numberto stop): "; 
    cin >> score1; 
    cout << "Enter score 2(negative number to stop): "; 
    cin >> score2; 
    cout << "Enter score 3(negative number to stop): "; 
    cin >> score3; 
} //end 

double calcAverage (double &score1, double &score2, double &score3) 
{ 
    double average = 0.0; 
    average = calcAverage(score1, score2, score3); 

    return average; 
} //end of clacAverage 

void displayAverage(double avg)  
{ 
    cout << fixed << setprecision(1); 
    cout << "Average: " << avg << endl; 
} //end 
+1

사용 4 개 공간이 될하거나 전체 코드를 선택하고 클릭해야 저장하지 않습니다. – Mahesh

+0

어떻게'calcAverage'에'calcAverage (double & score1, double & score2, double & score3);와 같은 세 개의 매개 변수를 원하지만'calcAverage (avg);와 같은 하나의 매개 변수를 제공합니까? 나는 C++ 소년이 아니다. 내가 물어 보는 것이 멍청한 놈이라면. 나는 또한 당신이''while (avg! = - 1)''을 제거해야한다고 생각한다. (avg! = -1) : – Bastardo

+0

부동 소수점 숫자를 직접 비교하십시오 (http://how-to.wikia.com/wiki/Howto_compare_floating_point_numbers_in_the_C_programming_language 참조). – stefaanv

답변

7

날 지점 않습니다. 제거해보십시오.

4

블록에 return이 있습니다. return은 루프를 포함하여 모든 것을 정지시킵니다. 파이썬 (AFAIK)만이 주기적으로 리턴을 넣고 사이클링을 할 수 있습니다.

0

@Katie : 코드가 컴파일 되나요? 귀하의 calcAverage (평균); 함수 호출은 정의한 방법과 다릅니다. 같은 이름의 서명으로 오버로드 된 함수에 대한 코드를 추가하는 것을 잊었습니까? calcAverage (double) ???

현재, while() 후에 세미콜론을 제거하면 정상적으로 실행될 수 있습니다. 위의 질문을 확인한 후에 사용해보십시오.

0

반환은 루프를 끝내고 함수가 호출 된 위치로 되돌립니다. 또한 루프 본문에서 다시 평균을 초기화하는 것처럼 보이지 않습니다? 당신은 평균을 반환하지만 편집기 탭에서 {}`존재`가 각 코드 문 앞에

avg = calcaAverage(1,2,3) 
관련 문제