开发者

Calculate high and low value of array

开发者 https://www.devze.com 2023-01-08 11:38 出处:网络
struct WeatherStation{ string Name; double Temperature; }; void Initia开发者_Go百科lize(WeatherStation[]);
 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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号