Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef SEMAFOR_HPP_INCLUDED
- #define SEMAFOR_HPP_INCLUDED
- #include <iostream>
- using namespace std;
- enum States {sON, sOFF, sOUT, sBlink};
- enum Colours {cRed, cGreen, cYellow, cYellowRed, cNone, cBlink};
- class Semafor {
- private:
- States state;
- Colours colour;
- public:
- Semafor();
- States getState() const;
- Colours getColour() const;
- bool turnON();
- bool turnOFF();
- bool turnOUT();
- bool turnBlink();
- bool repair();
- bool changeColour();
- };
- #endif // SEMAFOR_HPP_INCLUDED
- **********************************************************************
- #include "semafor.hpp"
- Semafor::Semafor()
- {
- state = sOFF;
- colour = cNone;
- }
- States Semafor::getState() const {
- return state;
- }
- Colours Semafor::getColour() const {
- return colour;
- }
- bool Semafor::turnON(){
- if (state == sOFF)
- {
- state = sON;
- colour = cRed;
- return true;
- }
- else return false;
- }
- bool Semafor::turnOFF(){
- if (state==sON || state==sBlink)
- {
- state = sOFF;
- colour = cNone;
- return true;
- }
- else return false;
- }
- bool Semafor::turnOUT(){
- if (state != sOFF)
- {
- state = sOUT;
- colour = cNone;
- return true;
- }
- else return false;
- }
- bool Semafor::turnBlink(){
- if (state == sOFF)
- {
- state = sBlink;
- colour = cBlink;
- return true;
- }
- else return false;
- }
- bool Semafor::repair(){
- if (state = sOUT)
- {
- state = sOFF;
- colour = cNone;
- return true;
- }
- else return false;
- }
- bool Semafor::changeColour(){
- if (state==sON)
- {
- switch (colour) {
- case cRed : colour =cYellowRed; break;
- case cYellowRed : colour = cGreen; break;
- case cGreen : colour = cYellow; break;
- case cYellow : colour = cRed; break;
- }
- return true;
- }
- else return false;
- }
- ***********************************************************************************************
- #include <iostream>
- #include "semafor.hpp"
- using namespace std;
- void printSemafor(const Semafor &rs)
- {
- cout<<"stanje semafora je sledece:"<<endl;
- switch (rs.getState())
- {
- case sON : cout<<"ON"<<endl; break;
- case sOFF : cout<<"OFF"<<endl; break;
- case sOUT : cout<<"OUT"<<endl; break;
- case sBlink : cout<<"BLINK"<<endl; break;
- }
- cout<<"boja semafora je sledeca: "<<endl;
- switch(rs.getColour())
- {
- case cRed : cout<<"red"<<endl; break;
- case cYellowRed : cout<<"yellowred"<<endl; break;
- case cYellow : cout<<"yellow"<<endl; break;
- case cGreen : cout<<"green"<<endl; break;
- case cNone : cout<<"none"<<endl; break;
- case cBlink: cout<<"blink"<<endl; break;
- }
- }
- char meni() {
- char odg;
- do
- {
- cout<<"izaberi redni broj opcije "<<endl;
- cout<<"1 Ukljuci semafor, 2 iskljuci, 3 ukljuci blink, 4 pokvari, 5. popravi, 6. promeni boju, 7, kraj rada"<<endl;
- cin>>odg;
- }while (odg < '1' || odg > '7');
- return odg;
- }
- void uspeh()
- {
- cout<<"operacija je uspela"<<endl;
- }
- void neuspeh()
- {
- cout<<"operacija nije uspela"<<endl;
- }
- int main()
- {
- Semafor s;
- char ch;
- do
- {
- ch = meni();
- switch (ch)
- {
- case '1' : if(s.turnON()) uspeh();
- else neuspeh();
- printSemafor(s); break;
- case '2' : if(s.turnOFF()) uspeh();
- else neuspeh();
- printSemafor(s); break;
- case '3' : if(s.turnBlink()) uspeh();
- else neuspeh();
- printSemafor(s); break;
- case '4' : if(s.turnOUT()) uspeh();
- else neuspeh();
- printSemafor(s); break;
- case '5' : if(s.repair()) uspeh();
- else neuspeh();
- printSemafor(s); break;
- case '6' : if(s.changeColour()) uspeh();
- else neuspeh();
- printSemafor(s); break;
- }
- }while(ch!='7');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement