#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());} double kaugus(Vektor* v){ Vektor *abi=this->lahuta(v); double tulemus=abi->pikkus(); free(abi); return tulemus; } }; 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); } Vektor* kysiAsukoht(){return asukoht;} }; 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 ); Vektor *sihtkoht=new Vektor(10, 0); bool veel=true; for(int i=0; i<15 && veel; i++){ pall->teeSamm(); double k=pall->kysiAsukoht()->kaugus(sihtkoht); cout << pall->kysiAsukoht()->kaugus(sihtkoht) << endl; if(k<10){ cout << "pihtas" << endl; veel=false; } pall->tryki(); } return 0; }