Петля не работает - PullRequest
       3

Петля не работает

1 голос
/ 21 апреля 2011

Когда я запускаю программу, она в среднем усредняется, но не зацикливается! Кто-нибудь видит, что я делаю неправильно, и указывает мне правильное направление

#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

Ответы [ 4 ]

7 голосов
/ 21 апреля 2011

После вашей петли while() стоит точка с запятой.Попробуйте удалить его.

4 голосов
/ 21 апреля 2011

У вас есть return в вас while блок.Возврат останавливает все, включая петли.Только Python (AFAIK) позволяет помещать возврат в цикл и получать его циклично.

0 голосов
/ 15 сентября 2011

Return завершит цикл и вернет управление обратно туда, где вызывается функция. Также не похоже, что вы снова инициализируете avg в теле цикла?вы возвращаете среднее значение, но не сохраняете его должно быть

avg = calcaAverage(1,2,3)
0 голосов
/ 21 апреля 2011

@ Кэти: Ваш код даже компилируется? Ваш calcAverage (в среднем); Вызов функции отличается от того, как вы ее определили. Вы забыли добавить код для перегруженной функции с (одноименной) подписью calcAverage (double) ???

Кстати, удалите точку с запятой через некоторое время (), и она может работать нормально. Попробуйте после проверки моего вопроса выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...