fork download
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <thread> // Додано для std::this_thread::sleep_for
  5. #include <chrono> // Додано для std::chrono::seconds
  6.  
  7. // Клас для симуляції датчика диму та температури
  8. class FireSensor {
  9. public:
  10. FireSensor(int smokeThreshold, int tempThreshold)
  11. : smokeThreshold(smokeThreshold), tempThreshold(tempThreshold) {}
  12.  
  13. // Функція для імітації зчитування диму
  14. int readSmoke() {
  15. return rand() % 100; // Симулюємо рівень диму від 0 до 99
  16. }
  17.  
  18. // Функція для імітації зчитування температури
  19. int readTemperature() {
  20. return 20 + rand() % 60; // Температура в діапазоні від 20 до 79°C
  21. }
  22.  
  23. // Функція для перевірки стану системи
  24. bool isFireDetected() {
  25. int smoke = readSmoke();
  26. int temperature = readTemperature();
  27. std::cout << "Рівень диму: " << smoke << ", Температура: " << temperature << "°C" << std::endl;
  28.  
  29. // Перевірка: якщо рівень диму або температура перевищують граничні значення
  30. return (smoke > smokeThreshold || temperature > tempThreshold);
  31. }
  32.  
  33. private:
  34. int smokeThreshold; // Граничний рівень диму
  35. int tempThreshold; // Гранична температура
  36. };
  37.  
  38. // Функція для активації сирени
  39. void activateAlarm() {
  40. std::cout << "🚨 Пожежна сигналізація активована! 🚨" << std::endl;
  41. }
  42.  
  43. int main() {
  44. srand(static_cast<unsigned>(time(0))); // Ініціалізація генератора випадкових чисел
  45.  
  46. FireSensor sensor(70, 60); // Ініціалізація датчиків з пороговими значеннями (дим > 70, температура > 60)
  47.  
  48. std::cout << "Система пожежної сигналізації запущена..." << std::endl;
  49.  
  50. while (true) {
  51. if (sensor.isFireDetected()) {
  52. activateAlarm(); // Якщо виявлено пожежу — активуємо сигналізацію
  53. break; // Зупиняємо програму після активації сигналізації
  54. } else {
  55. std::cout << "Система в нормі. Перевірка триває..." << std::endl;
  56. std::this_thread::sleep_for(std::chrono::seconds(3)); // Затримка між перевірками
  57. }
  58. }
  59.  
  60. return 0;
  61. }
  62.  
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
Система пожежної сигналізації запущена...
Рівень диму: 24, Температура: 25°C
Система в нормі. Перевірка триває...
Рівень диму: 50, Температура: 41°C
Система в нормі. Перевірка триває...
Рівень диму: 71, Температура: 49°C
🚨 Пожежна сигналізація активована! 🚨