2014-11-20 2 views
-1

Мне нужна эта функция, чтобы распечатать максимальную, минимальную и среднюю значения всех значений, введенных в массив. Я столкнулся с проблемой, что программа будет распечатывать только последнее значение, введенное для массива. Ex. Если я нахожу 43, 78 и 23, он будет печатать только 23 для среднего, макс и мин. Что я делаю неправильно, чтобы получить этот результат?Эта функция выводит только последнее значение, введенное в массив

#include <iostream> 
using namespace std; 
float temptotal = 0; 
float averagetemp = 0; 
float temperatures[50]; 
float average(); 
void highest(); 
void lowest(); 
int main() 
{ 
average(); 
highest(); 
lowest(); 
    } 
float average() 
{ 
    float days = 0; 
    cout << "Enter the number of days: "; 
    cin >> days; 
    if (days > 50) 
    { 
     cout << "You may only enter temperatures for 50 days." << endl; 
     return 0; 
    } 
    for (int i = 1; i <= days; i++) 
    { 
     cout << "Enter the temperature for day number " << i << ": "; 
     cin >> temperatures[50]; 
    } 
      temptotal += temperatures[50]; 
      averagetemp = (temptotal/days); 
      cout << "The average temperature is: " << averagetemp << endl; 
      return temperatures[50]; 
} 
void highest() 
{ 
    float max = -9999999999999; 
    if (temperatures[50] > max) 
     max = temperatures[50]; 

    cout << "The highest temperature is: " << max << endl; 
    } 
    void lowest() 
    { 
      float min = 9999999999999; 
      if (temperatures[50] < min) 
       min = temperatures[50]; 
      cout << "The lowest temperature is: " << min << endl; 
    } 

ответ

0

Вы храните все входы в 50-м элементе массива.

Поэтому последний переписывает все остальные.

Это должно работать для усреднения.

for (int i = 1; i <= days; i++) 
{ 
    cout << "Enter the temperature for day number " << i << ": "; 
    cin >> temperatures[i]; 
    temptotal += temperatures[i]; 
} 
average = temptotal/days ; 

Это должно работать для макс.

float max = -9999999999999; 
for( int i = 0 ; i < days ; i++) 
{ 
    if (temperatures[i] > max) 
     max = temperatures[i];    
} 
cout << max; 

и сделать аналогичную вещь для мин тоже.

+0

Код max и min не работает, я продолжаю получать ошибку с переменной days. – Millet123

+0

Millet123, это относится к температурам [50], которые являются недействительными. Я удалил сообщение User3946110, код которого должен работать сейчас. – Persixty

+0

Он не работает, я получаю сообщение о том, что переменная days не инициализирована. – Millet123