Calculate high and low value of array
struct WeatherStation {
string Name;
double Temperature;
};
void Initia开发者_Go百科lize(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;
}
The last part is tripping me up.
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
It cannot convert WeatherStation
to int
because WeatherStation
is a structure. If you want to get a member of a structure you should write, for instance, List[0].Temperature
.
You should use C++ containers instead of arrays
If you don't like std::vector, you can use std::array
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;
}
Also note that it's not a very good idea to name your variables the same way as you name your types (I mean capitalized)
The problem you're having (or at least the main problem) is right here:
if(List[K] < Low)
Low = List[K];
if(List[K] > High)
High = List[K];
List
is defined as an array of WeatherStation
structures. You want something like:
if (list[K].Temperature < Low)
Low = List[K].Temperature;
Edit: You might also want to look into using std::min_element
and std::max_element
instead.
精彩评论