State Machine with Enums

#include <iostream>
#include <string>
using namespace std;

enum class State { Idle, Busy, Error };

const char* toString(State s) {
    switch (s) {
        case State::Idle:  return "Idle";
        case State::Busy:  return "Busy";
        case State::Error: return "Error";
    }
    return "";
}

int main() {
    int n;
    cin >> n;

    State state = State::Idle;

    for (int i = 0; i < n; i++) {
        string cmd;
        cin >> cmd;

        // implement transition logic to update state
        switch (state){
            case State::Idle:
                if(cmd == "start"){
                    state=State::Busy;
                }
            break;
            case State::Busy:
                if(cmd == "done"){
                    state=State::Idle;
                }
                else if(cmd == "fail"){
                    state=State::Error;
                }
            break;
        case State::Error:
            break;
        }
    }

    cout << toString(state);
    return 0;
}

Solving Approach

 

 

 

 

Upvote
Downvote
Loading...

Input

3 start done start

Expected Output

Busy