00001 //--------------------------------------------------------------------------- 00002 00003 #ifndef stromH 00004 #define stromH 00005 00006 #include "zoznam.h" 00007 #include "deklaracie.h" 00008 #include "ukladanie.h" 00009 //--------------------------------------------------------------------------- 00010 00015 class strom 00016 { 00020 int pocet_moznych_ciar; //pocet vrcholov rovin, v ktorych je len prazdny zoznam 00021 00022 private: 00026 zoznam *odkrojeny; //zoznam, za ktoreho bola odobrana cast pri krizeni 00027 00031 int dlzky[100]; 00032 00036 bod utvary[100][30]; 00037 00041 int pompoc; //pomocne pocitadlo pri vybere zoznamu na krizenie 00042 00043 00044 bod pombody[10]; //pole pomocnych bodov pri vytvarani rovnej roviny 00045 00046 public: 00050 int pocet_zaznamov; //pocet utvarov v strome, pocet ciar+pocet rovin 00051 00055 int pocet_ciar; //pocet ciar v strome 00056 00060 int pocet_ploch; //pocet rovin v strome 00061 00065 zoznam *koren; 00066 00070 bool aktualne; //true ak su udaje v poliach dlzky a utvary aktualne 00071 00072 public: 00077 strom(); 00078 00083 ~strom(); 00084 00085 private: 00092 zoznam* najdi_zoznam_na_krizenie(zoznam *zoz); 00093 00099 void mutuj_zoznam(zoznam *zoz); 00100 00107 element nahodny_element(int vn); 00108 00113 posun nahodny_posun(); 00114 00120 void zduplikuj_zoznam(zoznam *zoz1, zoznam *zoz2); 00121 00125 void vyrataj_body(); 00126 00136 void spracuj_zoznam(zoznam *zoz, bod bod1, bod bod2); 00137 00147 void spracuj_plochu(element el, bod bod1, bod bod2); 00148 00154 void zrus_zoznam(zoznam *zoz); 00155 00162 vektor otocenie(vektor predch, vektor na_otocenie); 00163 00171 bod nasledujuci_bod(bod bod1, bod bod2, posun dalsi); 00172 //vyrata nasledujudi bod.. bod1, bod2, nasledujuci bod 00173 // 00174 public: 00175 00180 zoznam* zoznam_na_krizenie(); 00181 00186 void pridaj_po_krizeni(prvok *uk); 00187 00191 void mutuj_strom(); 00192 00197 void zduplikuj_sa(strom *s); 00198 00202 void napln_nahodne(); 00203 00208 bool is_empty(); 00209 00214 int* vrat_dlzky(); 00215 00220 bod* vrat_utvary(); 00221 }; 00222 00228 float velkost_vektora(vektor v); 00229 #endif