Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1.  
  2. #include "pch.h"
  3. #include <iostream>
  4. #include <vector>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9.  
  10. struct Partition
  11. {
  12. int ID;
  13. string name;
  14. bool alarm;
  15. float temperature;
  16. };
  17.  
  18. // процедура для сортировки вектора по температуре по убыванию
  19. bool sortFunc_Temperature(const Partition &l, const Partition &r)
  20. {
  21. return l.temperature > r.temperature;
  22. }
  23.  
  24. // процедура для поиска элемента по значению температуры в векторе, отсортированном по убыванию
  25. // полезна для нахождения одного элемента по значению температуры
  26. // в этом примере процедура пока не используется, т.к. берется только максимальное значение
  27. bool compareFunc_Temperature(const Partition &l, const float &val)
  28. {
  29. return l.temperature > val;
  30. }
  31.  
  32. // процедура для сортировки вектора по тревоге (сначала true, потом false)
  33. bool sortFunc_Alarm(const Partition &l, const Partition &r)
  34. {
  35. return l.alarm > r.alarm; // исходим из того, что true > false
  36. }
  37.  
  38. // процедура для поиска элемента по тревоге в векторе, отсортированном по значению (сначала true, потом false)
  39. // полезна для нахождения одного элемента по значению тревоги
  40. // в этом примере процедура пока не используется, т.к. берутся только первые значения с true
  41. bool compareFunc_Alarm(const Partition &l, const bool &val)
  42. {
  43. return l.alarm > val; // исходим из того, что true > false
  44. }
  45.  
  46.  
  47. int main()
  48. {
  49. vector<Partition> myVect = { {5, "FIVE", false, -40}, {3, "THREE", true, -10}, {9, "NINE", false, 15}, {7, "SEVEN", true, 0}, {2, "TWO", false, -5} };
  50. // надо будет задать 50000 элементов в цикле
  51.  
  52. cout << endl;
  53.  
  54. std::sort(myVect.begin(), myVect.end(), sortFunc_Temperature); // сортируем по температуре
  55.  
  56. for (Partition &l : myVect)
  57. {
  58. cout << l.name.c_str() << endl;
  59. }
  60.  
  61. cout << "Max temperature " << myVect.begin()->temperature << " for partition: " << myVect.begin()->name.c_str() << endl;
  62.  
  63.  
  64. // это для поиска раздела с конкретной температурой, пока не используем
  65. //vector<Partition>::iterator res;
  66. //res = std::lower_bound(myVect.begin(), myVect.end(), -10, compareFunc_Temperature);
  67. //cout << "Temperature -10: " << res->name.c_str() << endl;
  68.  
  69.  
  70. std::sort(myVect.begin(), myVect.end(), sortFunc_Alarm); // сортируем по тревоге
  71.  
  72. vector<Partition>::iterator it;
  73. cout << "Alarmed partitions: " << endl;
  74. for (it = myVect.begin(); it != myVect.end() && it->alarm; it++)
  75. {
  76. cout << it->name.c_str() << endl;
  77. }
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement