2010-07-19 103 views
0
struct WeatherStation { 

string Name; 
double Temperature; 

}; 

void Initialize(WeatherStation[]); 
void HL(WeatherStation List[]); 

int main() 

{ 
string Command; 
    WeatherStation Stations[5]; 

    //some commands 

} 
void Initialize(WeatherStation StationList[]) 

{ 

    StationList[0].Name = "A"; 
    StationList[0].Temperature = 0.0; 

    StationList[1].Name = "B"; 
    StationList[1].Temperature = 0.0; 

    StationList[2].Name = "C"; 
    StationList[2].Temperature = 0.0; 

    StationList[3].Name = "D"; 
    StationList[3].Temperature = 0.0; 

    StationList[4].Name = "E"; 
    StationList[4].Temperature = 0.0; 

    } 

void HL(WeatherStation List[]) 
    { 
    int K; 
    int Low = List[0];    
    int High = List[0];  

    for(K = 0 ; K < 5 ; K++)  
    if(List[K] < Low) 
    Low = List[K]; 

    for(K=0 ; K < 5 ; K++)  
    if(List[K] > High) 
    High = List[K]; 

    cout << "Lowest Temperature: " <<Low << endl; 
    cout << "Highest Temperature: "<< High << endl; 
    } 

最後一部分讓我絆倒。計算陣列的高值和低值

chief.cpp: In function ‘void HL(WeatherStation*)’:
chief.cpp:124: error: cannot convert ‘WeatherStation’ to ‘int’ in initialization
chief.cpp:125: error: cannot convert ‘WeatherStation’ to ‘int’ in initialization
chief.cpp:128: error: no match for ‘operator<’ in ‘*(List + ((unsigned int)(((unsigned int)K) * 12u))) < Low’
chief.cpp:129: error: cannot convert ‘WeatherStation’ to ‘int’ in assignment
chief.cpp:132: error: no match for ‘operator>’ in ‘*(List + ((unsigned int)(((unsigned int)K) * 12u))) > High’
chief.cpp:133: error: cannot convert ‘WeatherStation’ to ‘int’ in assignment

回答

0

它不能轉換WeatherStationint因爲WeatherStation是一個結構。如果你想獲得一個結構的成員,你應該寫,例如,List[0].Temperature

+1

溫度是雙重的,所以雙低=等等。 – 2010-07-19 19:29:59

+0

必須使用* epsilon *因子,而不是與雙等同。雙打很少完全相同。 – 2010-07-19 19:32:13

+0

可能'WeatherStation :: Temperature'應該是另一端的'int'。 – 2010-07-19 19:34:23

0

您應該使用C++容器代替陣列

如果你不喜歡的std ::向量,就可以使用std ::陣列

void Initialize(std::vector<WeatherStation>&); 
void HL(const std::vector<WeatherStation>&); 

int main() 

{ 
string Command; 
    std::vector<WeatherStation> Stations; 

    //some commands 

} 
void Initialize(std::vector<WeatherStation>& StationsList) 

{ 

    StationList.push_back({"A", 0.0}); 
    StationList.push_back({"B", 0.0}); 
    StationList.push_back({"C", 0.0}); 
    StationList.push_back({"D", 0.0}); 
    StationList.push_back({"E", 0.0}); 

    } 

void HL(const std::vector<WeatherStation>& List) 
    { 
    cout << "Lowest Temperature: " << std::min_element(List.begin(), List.end())->Temperature << endl; 
    cout << "Highest Temperature: "<< std::max_element(List.begin(), List.end())->Temperature << endl; 
    } 

另外請注意,這不是一個很好的主意因爲你的名字你的類型來命名你的變量以同樣的方式(我的意思是大寫)

0

您遇到的問題(或者至少主要的問題)就在這裏:

if(List[K] < Low) 
    Low = List[K]; 

if(List[K] > High) 
    High = List[K]; 

List被定義爲WeatherStation結構的數組。你想要的東西,如:

if (list[K].Temperature < Low) 
    Low = List[K].Temperature; 

編輯:您可能還需要考慮使用std::min_elementstd::max_element代替。