PWM Constructor Modes

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

// Write your PWMController class here
class PWMController{
private:
    int freq;
    int duty;
    bool enabled;
public:

    PWMController(int freq) 
        : freq(freq), duty(0), enabled(false) {}
    
    PWMController(int freq, int duty) 
        : freq(freq), enabled(true) 
    {
        if(duty < 0)    duty  = 0;
        else if(duty > 100) duty = 100;
        this->duty = duty;
    }

    void setDuty(int d){
        if(d < 0)           duty  = 0;
        else if(d > 100)    duty = 100;
        else                duty = d;
    }

    void disable() { enabled = false; }
    
    void print()   { cout << "F=" << freq << " D=" << duty << " EN=" << enabled ;}
};

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

    PWMController pwm(0); // temporary placeholder

    if (mode == 1) {
        int f;
        cin >> f;
        pwm = PWMController(f);
    }
    else {
        int f, d;
        cin >> f >> d;
        pwm = PWMController(f, d);
    }

    int x;
    cin >> x;

    if (x == -1)
        pwm.disable();
    else
        pwm.setDuty(x);

    pwm.print();
    return 0;
}

Constructor overloading

 

 

 

 

 

Upvote
Downvote
Loading...

Input

1 1000 50

Expected Output

F=1000 D=50 EN=0