#include <iostream> using namespace std; class Clock { public: Clock() { cout << "Clock enabled" << endl; } ~Clock() { cout << "Clock disabled" << endl; } }; class Bus { private: Clock& clk; public: Bus(Clock& c) : clk(c) { cout << "Bus initialized" << endl; } ~Bus() { cout << "Bus stopped" << endl; } void write(int addr, int val) { cout << "Bus write: " << addr << " " << val << endl; } }; class Driver { private: Bus& bus; public: Driver(Bus& b) : bus(b) { cout << "Driver started" << endl; } void operate(int addr, int val) { // perform bus write bus.write(addr, val); } ~Driver() { cout << "Driver stopped" << endl; } }; class SystemController { private: Clock clk; Bus bus; Driver drv; public: // Constructor should set up dependencies SystemController() : bus(clk) , drv(bus) {} void run(int addr, int val) { // trigger driver operation drv.operate(addr, val); } }; int main() { int addr, val; cin >> addr >> val; { SystemController sys; sys.run(addr, val); } return 0; }
Test Cases
Test Results
Input
5 10
Expected Output
Clock enabled Bus initialized Driver started Bus write: 5 10 Driver stopped Bus stopped Clock disabled