ADC Config Flags

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

enum class AdcConfig : uint8_t{
ChannelEnable = 1,
InterruptEnable = 2,
DMAEnable = 4};


void printConfig(uint8_t cfg){

    switch(cfg){

        case 0: cout << "None"; break;
        case 1: cout << "DMAEnable"; break;
        case 2: cout << "InterruptEnable"; break;
        case 3: cout << "InterruptEnable DMAEnable"; break;
        case 4: cout << "ChannelEnable"; break;
        case 5: cout << "ChannelEnable DMAEnable"; break;
        case 6: cout << "ChannelEnable InterruptEnable"; break;
        case 7: cout << "ChannelEnable InterruptEnable DMAEnable"; break;




    }


}

int main() {
    int ch, intr, dma;
    cin >> ch >> intr >> dma;

    uint8_t cfg = 0;
    if (ch)   cfg |= static_cast<uint8_t>(AdcConfig::ChannelEnable);
    if (intr) cfg |= static_cast<uint8_t>(AdcConfig::InterruptEnable);
    if (dma)  cfg |= static_cast<uint8_t>(AdcConfig::DMAEnable);

    printConfig(cfg);
    return 0;
}

Solving Approach

 

 

 

 

Upvote
Downvote
Loading...

Input

1 0 1

Expected Output

ChannelEnable DMAEnable