PWM Register Access Control

#include <iostream>

class PWMDriver {
private:
    // TODO: This member is exposed. Encapsulate it.
    // TODO: Ensure valid range [0, 100].
    int ccr_reg;
public:
    PWMDriver() : ccr_reg(0) {}
    void setCCR(int creg){
        if(creg>=0 && creg<=100){
            ccr_reg = creg;
        }
        else{
            creg = (creg>100)?ccr_reg=100:creg;
            creg = (creg<0)?ccr_reg=0:creg;
        }
    }
    int get() const{
        return ccr_reg;
    }
    
    // TODO: Add getter if necessary for printing
};

int main() {
    int N;
    if (!(std::cin >> N)) return 0;

    PWMDriver driver;

    for (int i = 0; i < N; ++i) {
        int val;
        std::cin >> val;

        // TODO: Refactor this access to use a safe setter method
        driver.setCCR(val);

        // Output current state
        std::cout << "CCR: " << driver.get() << std::endl;
    }

    return 0;
}

Solving Approach

 

 

 

 

 

Upvote
Downvote
Loading...

Input

3 50 150 -20

Expected Output

CCR: 50 CCR: 100 CCR: 0