ADC Config Flags

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


// Declare enum class AdcConfig : uint8_t
// ChannelEnable = 1
// InterruptEnable = 2
// DMAEnable = 4
enum class AdcConfig : uint8_t { ChannelEnable = 1, InterruptEnable = 2, DMAEnable = 4 };
const char* AdcConfigString[] { 
    "ChannelEnable", 
    "InterruptEnable", 
    "DMAEnable"};

// Implement void printConfig(uint8_t cfg)
void printConfig(uint8_t cfg)
{
    if (!cfg) 
    {
        cout << "None" << endl;
        return;
    }

    for ( int i = 0; i < 3; i++)
    {
        if ( cfg & ( 1 << i))
        {
            cout << AdcConfigString[i] << " " ;
        }
    }
}

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