2013-09-05 6 views
1

У меня проблема, я не могу вычислить. Я новичок в программировании. Вот код, который я написал. и вот ошибка, которую я получаю «ошибка C4700: неинициализированная локальная переменная« самая низкая »используется« Я не уверен, как ее исправить. Также я уверен, что есть лучшие способы написания этой программы, но это те требования, которые мне нужно пройти. Как исправить ошибку im get?ошибка C4700: неинициализированная локальная переменная «самая низкая» используется

#include "stdafx.h" 
#include "iostream" 
#include <iomanip> 

using namespace std; 

//Function prototypes 
void getScore(int &score); 
int findLowest(int score1, int score2, int score3, int score4, int score5, int &lowest); 
void calcAverage(int score1, int score2, int score3, int score4, int score5); 


int main() 
{ 
cout<<"Average with Lowest Score Drop by John\n"<<endl; 
int score1, 
    score2, 
    score3, 
    score4, 
    score5, 
    lowest; 

    getScore(score1); 
    getScore(score2); 
    getScore(score3); 
    getScore(score4); 
    getScore(score5); 

    calcAverage(score1, score2, score3, score4, score5); 


    cin.get(); 
    cin.get(); 
return 0; 
} 

void getScore(int &score) 
{ 

cout << "Please enter 5 test scores between 1 and 100): "; 
cin >> score; 

while (score <= 0 || score >= 100) 
{ 
    cout << "Enter a score values of 0 to 100"; 
    cin >> score; 
} 
} 

int findLowest(int score1, int score2, int score3, int score4, int score5, int &lowest) 
{ 
lowest = score1; 
if (score2 < lowest) 
    lowest = score2; 
else if (score3 < lowest) 
    lowest = score3; 
else if (score4 < lowest) 
    lowest = score4; 
else if (score5 < lowest) 
    lowest = score5; 

cout << "The lowest test score is " << lowest << endl; 

return lowest; 
} 

void calcAverage (int score1, int score2, int score3, int score4, int score5) 

{ 
int findLowest(int, int, int, int, int, int); 
int lowest; 
double average; 
findLowest(score1, score2, score3, score4, score5, lowest); 


average = (((float)score1 + score2 + score3 + score4 + score5) - lowest)/4.0; 
//cout << setw(4); 
cout << fixed << showpoint << setprecision(2); 
cout <<" With the grade "<<lowest<< " dropped"<<"The average of test scores entered is: " << average << endl; 
} 
+0

По крайней мере, сообщите нам, в какой строке происходит ошибка. Кроме того, попробовали ли вы упростить программу до самой короткой программы, которая все еще содержит ошибку? –

+1

Не помещайте прототипы функций внутри функций. –

+0

Вскоре вы научитесь использовать массивы вместо наборов переменных типа 'score1',' score2', ... 'score5'. –

ответ

1

findLowest прототип внутри calcAverage отсутствует &:

void calcAverage (int score1, int score2, int score3, int score4, int score5) 
{ 
    int findLowest(int, int, int, int, int, int&); 
    //          ^
    .... 
} 

На самом деле, вам не нужен этот прототип, потому что уже же прототип перед функцией main.

+0

Это исправлено. Большое спасибо! – John

+0

Но вы действительно должны просто удалить этот прототип, поскольку он не нужен, а ненужное избыточность - это всего лишь источник ошибок, как вы обнаружили. –

0

Я только что наткнулся на ваш вопрос. Ответ кажется очевидным. Посмотрите на свои последние строки: ` недействительным calcAverage (интермедиат score1, внутр score2, внутр score3, внутр score4, внутр score5)

{ 
int findLowest(int, int, int, int, int, int); 
int lowest; 
double average; 
findLowest(score1, score2, score3, score4, score5, lowest); 


average = (((float)score1 + score2 + score3 + score4 + score5) - lowest)/4.0; 
//cout << setw(4); 
cout << fixed << showpoint << setprecision(2); 
cout <<" With the grade "<<lowest<< " dropped"<<"The average of test scores entered is: " << average << endl; 
} ` 

Здесь int lowest не инициализирован. Попробуйте написать int lowest(0); или аналогичное начальное значение, соответствующее вашим потребностям.

Смежные вопросы