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

class Robot{
	private:
		float locX;
		float locY;
		int *sensorData;
		Robot() {}
	public:
		Robot(float x, float y=0.0){
			cout<<"[Construction] A new robot wa born in ("<<x<<", "<<y<<")"<<endl;
			locX=x;
			locY=y;
			sensorData=new int[5];
			for(int i=0;i<5;i++){
				sensorData[i]=0;
			}
		}
		Robot(const Robot& obj){
			cout<<"[Copy] Cloning robot from ("<<obj.locX<<", "<<obj.locY<<")"<<endl;
			this->locX=obj.locX;
			this->locY=obj.locY;
			this->sensorData=new int[5];
			for(int i=0;i<5;i++){
				this->sensorData[i]=obj.sensorData[i];
			}
		}
		~Robot(){
			cout<<"[Destruction] The robot in ("<<locX<<","<<locY<<")"<<" is getting destroyed. Clearing memory!"<<endl;
			delete[] sensorData;
		}
		void printStatus(){
			cout<<"  ->Position: X="<<locX<<", Y="<<locY<<endl;
		}
};

int main(){
	cout<<"===Starting Programme==="<<endl<<endl;
	Robot r1(10.5, 20.0);
	Robot r2(5.0);
	Robot r3=r1;
	r3.printStatus();
	Robot *r4=new Robot(100.0, 100.0);
	r4->printStatus();
	cout<<"\n===Ending Programme==="<<endl;
	delete r4;
	return 0;
}
