#include #include #include using namespace std; class KorgusErind : public runtime_error{}; class MaapinnaErind : public runtime_error{}; class AsukohaErind : public runtime_error{ public: AsukohaErind(const string& teade): runtime_error(teade){} }; class RuumiPunkt{ int x, y, z; public: void muudaAsukoht(int ux, int uy, int uz) throw (KorgusErind, MaapinnaErind); void liigu(int mx, int my, int mz) throw (KorgusErind, MaapinnaErind) ; void trykiAsukoht(); }; class Lennuk{ string mark; RuumiPunkt asukoht; public: Lennuk(string uusMark, int x, int y, int z); void teata(); void liiguta(string suund) throw (KorgusErind, MaapinnaErind); }; void RuumiPunkt::muudaAsukoht(int ux, int uy, int uz) throw (KorgusErind, MaapinnaErind){ if(uz>10000){throw KorgusErind();} if(uz<0){throw MaapinnaErind();} x=ux; y=uy; z=uz; } void RuumiPunkt::liigu(int mx, int my, int mz) throw (KorgusErind, MaapinnaErind){ muudaAsukoht(x+mx, y+my, z+mz); } void RuumiPunkt::trykiAsukoht(){ cout << x << " " << y << " " << z << endl; } Lennuk::Lennuk(string uusMark, int x, int y, int z){ mark=uusMark; asukoht.muudaAsukoht(x, y, z); } void Lennuk::teata(){ cout << mark << " "; asukoht.trykiAsukoht(); } void Lennuk::liiguta(string suund) throw (KorgusErind, MaapinnaErind){ try{ if(suund=="e"){asukoht.liigu(1000, 0, 0);} if(suund=="t"){asukoht.liigu(-1000, 0, 0);} if(suund=="y"){asukoht.liigu(0, 0, 1000);} if(suund=="a"){asukoht.liigu(0, 0, -1000);} if(suund=="v"){asukoht.liigu(0, 1000, 0);} if(suund=="p"){asukoht.liigu(0, -1000, 0);} } catch(KorgusErind& e){ cout << "ylal" << endl; //throw AsukohaErind("Liiga ko~rgel"); } catch(MaapinnaErind& e){ cout << "all" << endl; //throw AsukohaErind("Liiga madalal"); } teata(); } int main(int argc, char *argv[]) { Lennuk esimene("Tu", 100, 0, 0); string suund; esimene.teata(); while(suund!="o"){ cout << "palun suund" << endl; cin >> suund; try{ cout << "liigutab" << endl; esimene.liiguta(suund); cout << "valmis" << endl; } catch (AsukohaErind& e){ cout << e.what() << endl; } } return 0; }