Advertisement
gavrilo93

semafor

Nov 17th, 2013
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.55 KB | None | 0 0
  1. #ifndef SEMAFOR_HPP_INCLUDED
  2. #define SEMAFOR_HPP_INCLUDED
  3. #include <iostream>
  4. using namespace std;
  5. enum States {sON, sOFF, sOUT, sBlink};
  6. enum Colours {cRed, cGreen, cYellow, cYellowRed, cNone, cBlink};
  7.  
  8. class Semafor {
  9.     private:
  10.         States state;
  11.         Colours colour;
  12.     public:
  13.         Semafor();
  14.         States getState() const;
  15.         Colours getColour() const;
  16.         bool turnON();
  17.         bool turnOFF();
  18.         bool turnOUT();
  19.         bool turnBlink();
  20.         bool repair();
  21.         bool changeColour();
  22. };
  23.  
  24.  
  25. #endif // SEMAFOR_HPP_INCLUDED
  26. **********************************************************************
  27. #include "semafor.hpp"
  28. Semafor::Semafor()
  29. {
  30.     state = sOFF;
  31.     colour = cNone;
  32. }
  33.  
  34. States Semafor::getState() const {
  35.     return state;
  36. }
  37.  
  38. Colours Semafor::getColour() const {
  39.     return colour;
  40. }
  41.  
  42. bool Semafor::turnON(){
  43.     if (state == sOFF)
  44.         {
  45.             state = sON;
  46.             colour = cRed;
  47.             return true;
  48.         }
  49.     else return false;
  50.  
  51. }
  52. bool Semafor::turnOFF(){
  53.     if (state==sON || state==sBlink)
  54.         {
  55.             state = sOFF;
  56.             colour = cNone;
  57.             return true;
  58.         }
  59.     else return false;
  60.  
  61. }
  62.  
  63. bool Semafor::turnOUT(){
  64.     if (state != sOFF)
  65.         {
  66.             state = sOUT;
  67.             colour = cNone;
  68.             return true;
  69.         }
  70.     else return false;
  71.  
  72. }
  73.  
  74. bool Semafor::turnBlink(){
  75.     if (state == sOFF)
  76.         {
  77.             state = sBlink;
  78.             colour = cBlink;
  79.             return true;
  80.         }
  81.     else return false;
  82.  
  83. }
  84.  
  85. bool Semafor::repair(){
  86.     if (state = sOUT)
  87.     {
  88.         state = sOFF;
  89.         colour = cNone;
  90.         return true;
  91.     }
  92.     else return false;
  93.  
  94. }
  95.  
  96. bool Semafor::changeColour(){
  97.     if (state==sON)
  98.     {
  99.         switch (colour) {
  100.             case cRed : colour =cYellowRed; break;
  101.             case cYellowRed : colour = cGreen; break;
  102.             case cGreen : colour = cYellow; break;
  103.             case cYellow : colour = cRed; break;
  104.         }
  105.         return true;
  106.     }
  107.     else return false;
  108. }
  109. ***********************************************************************************************
  110. #include <iostream>
  111. #include "semafor.hpp"
  112.  
  113. using namespace std;
  114.  
  115. void printSemafor(const Semafor &rs)
  116. {
  117.     cout<<"stanje semafora je sledece:"<<endl;
  118.  
  119.     switch (rs.getState())
  120.         {
  121.             case sON : cout<<"ON"<<endl; break;
  122.             case sOFF : cout<<"OFF"<<endl;  break;
  123.             case sOUT : cout<<"OUT"<<endl; break;
  124.             case sBlink : cout<<"BLINK"<<endl; break;
  125.  
  126.         }
  127.     cout<<"boja semafora je sledeca: "<<endl;
  128.  
  129.     switch(rs.getColour())
  130.         {
  131.             case cRed : cout<<"red"<<endl; break;
  132.             case cYellowRed : cout<<"yellowred"<<endl; break;
  133.             case cYellow : cout<<"yellow"<<endl; break;
  134.             case cGreen : cout<<"green"<<endl; break;
  135.             case cNone : cout<<"none"<<endl; break;
  136.             case cBlink: cout<<"blink"<<endl; break;
  137.         }
  138. }
  139. char meni() {
  140. char odg;
  141.     do
  142.         {
  143.             cout<<"izaberi redni broj opcije "<<endl;
  144.             cout<<"1 Ukljuci semafor, 2 iskljuci, 3 ukljuci blink, 4 pokvari, 5. popravi, 6. promeni boju, 7, kraj rada"<<endl;
  145.             cin>>odg;
  146.         }while (odg < '1' || odg > '7');
  147.     return odg;
  148. }
  149. void uspeh()
  150. {
  151.     cout<<"operacija je uspela"<<endl;
  152.  
  153. }
  154. void neuspeh()
  155. {
  156.     cout<<"operacija nije uspela"<<endl;
  157. }
  158.  
  159.  
  160. int main()
  161. {
  162.     Semafor s;
  163.     char ch;
  164.     do
  165.         {
  166.             ch = meni();
  167.             switch (ch)
  168.             {
  169.                 case '1' : if(s.turnON()) uspeh();
  170.                             else neuspeh();
  171.                             printSemafor(s); break;
  172.                 case '2' : if(s.turnOFF()) uspeh();
  173.                             else neuspeh();
  174.                             printSemafor(s); break;
  175.                 case '3' : if(s.turnBlink()) uspeh();
  176.                             else neuspeh();
  177.                             printSemafor(s); break;
  178.                 case '4' : if(s.turnOUT()) uspeh();
  179.                             else neuspeh();
  180.                             printSemafor(s); break;
  181.                 case '5' : if(s.repair()) uspeh();
  182.                             else neuspeh();
  183.                             printSemafor(s); break;
  184.                 case '6' : if(s.changeColour()) uspeh();
  185.                             else neuspeh();
  186.                             printSemafor(s); break;
  187.             }
  188.  
  189.         }while(ch!='7');
  190.        return 0;
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement