#include #include using namespace std; class Vektor{ double vx, vy; public: Vektor(double ux, double uy){ vx=ux; vy=uy; } double pikkus(){ return sqrt(vx*vx+vy*vy); } double x(){return vx;} double y(){return vy;} Vektor* liida(Vektor* v){return new Vektor(vx+v->x(), vy+v->y());} Vektor* lahuta(Vektor* v){return new Vektor(vx-v->x(), vy-v->y());} }; class Liikuja{ protected: Vektor *asukoht; Vektor *kiirusesamm; public: Liikuja(double ax, double ay, double kx, double ky){ asukoht=new Vektor(ax, ay); kiirusesamm=new Vektor(kx, ky); } void tryki(){ cout << "(" << asukoht->x() << ", " << asukoht->y() << " - " << kiirusesamm->x() << ", " << kiirusesamm->y() << ")" << endl; } virtual void teeSamm(){ Vektor* vanaasukoht=asukoht; asukoht=asukoht->liida(kiirusesamm); free(vanaasukoht); } }; class KiirendusegaLiikuja: public Liikuja{ Vektor *kiirendusesamm; public: KiirendusegaLiikuja(double ax, double ay, double kx, double ky, double kdx, double kdy): Liikuja(ax,ay, kx, ky){ kiirendusesamm=new Vektor(kdx, kdy); } void teeSamm(){ Vektor* vanakiirusesamm=kiirusesamm; kiirusesamm=kiirusesamm->liida(kiirendusesamm); free(vanakiirusesamm); Liikuja::teeSamm(); } }; int main(void){ KiirendusegaLiikuja *pall=new KiirendusegaLiikuja(0, 100, 1, 0, 0, -1 ); for(int i=0; i<10; i++){ pall->teeSamm(); pall->tryki(); } return 0; }