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;
        if(cmd == "start") state = State::Busy;
        else if(cmd == "done") state = State::Idle;
        else state = State::Error;
        // implement transition logic to update state
    }

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

Solving Approach

 

 

 

 

Upvote
Downvote
Loading...

Input

3 start done start

Expected Output

Busy