Habsburg

Untitled

Oct 28th, 2015
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.56 KB | None | 0 0
  1. //Zadatak 3
  2. //Prezime i ime:Bukovec Nikolina
  3. //Matièni broj:42825
  4. #include <iostream>
  5. #include <fstream>
  6. #include "biblioteka_vrijeme.cc"
  7. using namespace std;
  8. struct telement{
  9.   int kljuc;
  10.   float sesta;
  11.   int sedma;
  12.   float prva;
  13.   char treca[37];
  14.   telement *lijevo,*desno;
  15. };//struct
  16. void zadatak(long plus=1224){
  17.   int i,b,broj;
  18.   fstream dat;
  19.   dat.open ("Podaci_za_testiranje.txt",ios::out);
  20.   b = 37 % 2 + 3;
  21.   dat << "kljuc\t";
  22.   dat << "sesta\t";
  23.   dat << "sedma\t";
  24.   dat << "prva\t";
  25.   dat << "treca\t";
  26.   dat << endl;
  27.   for (i=1;i<=b;i++){
  28.     broj = (37 + i + b) * 51 + plus;
  29.     dat << broj++ % 100 << "\t";
  30.     dat << broj++ % 10 << "." << (broj++ +43) % 10 << "\t";
  31.     dat << broj++ % 100 << "\t";
  32.     dat << broj++ % 10 << "." << (broj++ +43) % 10 << "\t";
  33.     dat << char(broj%26+65) << char((broj+7)%26+65) << char((broj+77)%26+65) << "\t";
  34.     dat << endl;
  35.   }//for
  36.   dat.close();dat.clear();
  37.   cout << "Otvorite najprije datoteku 'Podaci_za_testiranje.txt' !" << endl;
  38. };
  39. void S_42825_1(telement *stablo){
  40.   telement *zadnji,*novi;
  41.   int dalje=1;
  42.   int kljuc;
  43.   zadnji=stablo;
  44.   cout << "Kljuc = ";
  45.   cin >> kljuc;
  46.   do{
  47.     if (kljuc>zadnji->kljuc){
  48.       if (zadnji->desno!=NULL){zadnji=zadnji->desno;} //prijelaz na desni podèvor
  49.     else{ // dodavanje desnog podèvora
  50.       novi=new telement;
  51.       zadnji->desno=novi;
  52.       cout << "Dodajem desni podcvor:" << endl;
  53.       novi->kljuc=kljuc;
  54.       cout << "sesta: ";
  55.       cin >> novi->sesta;
  56.       cout << "sedma: ";
  57.       cin >> novi->sedma;
  58.       cout << "prva: ";
  59.       cin >> novi->prva;
  60.       cout << "treca: ";
  61.       cin >> novi->treca;
  62.       novi->lijevo=NULL;
  63.       novi->desno=NULL;
  64.       dalje=0;
  65.       }//if
  66.     }//if
  67.     else{//broj<=zadnji->kljuc
  68.       if (zadnji->lijevo!=NULL){zadnji=zadnji->lijevo;} //prijelaz na lijevi podèvor
  69.     else{ // dodavanje lijevog podèvora
  70.       novi=new telement;
  71.       zadnji->lijevo=novi;
  72.       cout << "Dodajem lijevi podcvor:" << endl;
  73.       novi->kljuc=kljuc;
  74.       cout << "sesta: ";
  75.       cin >> novi->sesta;
  76.       cout << "sedma: ";
  77.       cin >> novi->sedma;
  78.       cout << "prva: ";
  79.       cin >> novi->prva;
  80.       cout << "treca: ";
  81.       cin >> novi->treca;
  82.       novi->lijevo=NULL;
  83.       novi->desno=NULL;
  84.       dalje=0;
  85.       }//if
  86.     }
  87.   }while (dalje==1);
  88. };
  89. void S_42825_2(telement *stablo){
  90.   static telement *korijen=stablo;
  91.   if (stablo==NULL) return;
  92.     S_42825_2 (stablo->lijevo);
  93.   if (stablo!=korijen){
  94.     cout << "----------------------------- " << endl;
  95.     cout << "kljuc: " << stablo -> kljuc << endl;  
  96.     cout << "sesta: " << stablo -> sesta << endl;
  97.     cout << "sedma: " << stablo -> sedma << endl;
  98.     cout << "prva: " << stablo -> prva << endl;
  99.     cout << "treca: " << stablo -> treca << endl;
  100.   }
  101.     S_42825_2 (stablo->desno);
  102. };
  103. void *T_42825(telement *stablo, int broj=100){//vraæa adresu èvora ili NULL
  104.   telement *tekuci=stablo;
  105.   while (tekuci){
  106.     if ((tekuci->kljuc==broj)&&(tekuci!=stablo))break;
  107.     if (broj>tekuci->kljuc)
  108.       tekuci=tekuci->desno;
  109.     else
  110.       tekuci=tekuci->lijevo;
  111.   };//while
  112.   if(tekuci)
  113.     std::cout << tekuci->kljuc << " " << tekuci->prva << " " << tekuci->sedma << " "<< tekuci->sesta << " " << tekuci->treca << "\n";
  114.   else
  115.     std::cout << "Cvor nije najden! ";
  116. };
  117. int main(){
  118.   zadatak();
  119.   char dalje;
  120.   int izbor,kljuc;
  121.   telement *stablo = new telement;
  122.   stablo->lijevo=NULL;
  123.   stablo->desno=NULL;
  124.   do{
  125.     cout << "1. dodavanje cvora u binarno stablo" << endl;
  126.     cout << "2. ispis cvorova u uzlaznom redoslijedu" << endl;
  127.     cout << "3. pretrazivanje binarnog stabla" << endl;
  128.     cout << "9. izlaz iz programa" << endl;
  129.     cin >> izbor;
  130.     switch (izbor){
  131.       case 1: S_42825_1(stablo);break;
  132.       case 2: S_42825_2(stablo);
  133.               cout << "kraj!" << endl;break;
  134.       case 3: cout << "Kljuc = ";
  135.               cin >> kljuc;
  136.               T_42825(stablo,kljuc);
  137.               break;
  138.       case 9: break;
  139.     }//switch
  140.   } while(izbor!=9);
  141.   cout << "int = " << sizeof(int) << " b" << endl;
  142.   cout << "----------------------- -----------------------" << endl;
  143.   cout << "Bukovec Nikolina 42825 \nKraj programa." << endl;
  144.   cin >> dalje;
  145. }
  146. //Zadaci:
  147. //Prevedite i pokrenite primjer. Upišite podatke za testiranje (u datoteci 'Podaci_za_testiranje.txt').
  148. //Kad dobijete poruku "Kraj programa" iskopirajte (pomoæu ALT+PrtScrn) prozor
  149. //s izvršenjem u Word-ov dokument.
  150. //Odgovorite (u Wordovom dokumentu, iza slike) na sljedeæa pitanja:
  151. //1. Koliko memorijskog prostora u radnoj memoriji zauzima èvor binarnog stabla (iz ovog primjera) i kojeg je on tipa?
  152. //2. Koliko èvorova binarnog stabla (ne raèunajuæi korijen) nakon unosa testnih podataka ima pokazivaè lijevo postavljen na NULL?
  153. //3. Navedite sve podrazumijevane argumente funkcije, te njihove tipove i dosege.
  154. //Spremite Word-ov dokument u datoteku 'zadatak_42825.doc'
  155. //------1 BOD-----
  156. //Izvršite traženu modifikaciju u programu:
  157. //Funkciju T_42825 modificirajte tako da bude bez tipa (void) i da prije povratka ispiše vrijednosti atributa naðenog èvora
  158. //ili poruku da èvor nije pronaðen (odgovarajuæe ispise unutar funkcije main treba ukloniti).
  159. //Ažurirani program spremite u datoteku 'ispravak_42825.cpp'
  160. //------1 BOD-----
  161. //Formirajte .ZIP datoteku 'zadatak_42825.zip' koja ukljuèuje:
  162. //- zadatak.cpp (bez izmjena!)
  163. //- zadatak_42825.doc (Word-ov dokument sa slikom i odgovorima)
  164. //- ispravak_42825.cpp
  165. //- Podaci_za_testiranje.txt
  166. // .ZIP datoteku snimite (upload) na FOI E-Learning sustav pod 'Domaæe zadaæe'
Advertisement
Add Comment
Please, Sign In to add comment