2014-11-20 2 views
1

변수 days은 함수 전체에서 이어지지 않습니다. dayshighestlowest 함수에서 초기화되지 않았으며 수정 방법을 모른다는 오류가 발생합니다. 지금까지 제가 가지고있는 코드는 다음과 같습니다.함수에서 변수 초기화

#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[i]; 
      temptotal += temperatures[i]; 
      return temperatures[i]; 
     } 
      averagetemp = temptotal/days; 
      cout << "The average temperature is: " << averagetemp << endl; 
} 
void highest() 
{ 
    float max = -9999999999999; 
    for (int i = 0; i < days; i++) 
    { 
     if (temperatures[i] > max) 
      max = temperatures[i]; 
     cout << "The highest temperature is: " << max << endl; 
    } 
} 
void lowest() 
{ 
    float min = 9999999999999; 
    for (int i = 0; i < days; i++) 
    { 
     if (temperatures[i] < min) 
      min = temperatures[i]; 
     cout << "The lowest temperature is: " << min << endl; 
    } 
} 
+1

범위는 글로벌 없습니다. – chris

+0

'days'를 매개 변수로 전달하십시오. – 0x499602D2

+0

문제 설명이 비현실적입니다. "초기화되지 않았다"는 오류 메시지는 표시되지 않습니다. 신고되지 않았 음, 즉 완전히 알려지지 않았 음을 알리는 오류가 표시됩니다. 한 함수에서 로컬로 선언 된 변수는 다른 함수에서 표시되거나 액세스 가능하지 않아야합니다. 따라서 코드는 작성된대로 작동 할 기회가 없습니다. 다시 디자인해야합니다. 하나의 함수에서 다른 함수로 그 변수 (그 값)를 수동으로 전달하거나 전역으로 만들어야합니다. – AnT

답변

1

당신은 highest()lowest()days을 통과해야합니다. 3 가지 기능 모두에 대한 공통 매개 변수 인 경우 main()에 해당 값을 설정 한 다음 해당 값을 전달할 수 있습니다. 그리고 days 그래서, 루프의 사용량에서 int해야한다고 생각 : 지역 변수의

int main() 
{ 
    int days = 0; 
    cout << "Enter the number of days: "; 
    cin >> days; 

    average(days); 
    highest(days); 
    lowest(days); 
} 

float average(int days) 
{ 
    ... ... 
} 
void highest(int days) 
{ 
    ... ... 
} 
void lowest(int days) 
{ 
    ... ... 
}