Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.43 KB | None | 0 0
  1. // main.cpp
  2. #include <iostream>
  3. #include "katalog.h"
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     Katalog kat;
  10.     string rej;
  11.     unsigned moc;
  12.     double waga;
  13.     char rodzaj;
  14.  
  15.     cin >> rej >> moc >> waga >> rodzaj;
  16.     Samochod A(rej, moc, waga, rodzaj);
  17.     kat.dodaj(A);
  18.     cin >> rej >> moc >> waga >> rodzaj;
  19.     Samochod B(rej, moc, waga, rodzaj);
  20.     kat.dodaj(B);
  21.     cin >> rej >> moc >> waga >> rodzaj;
  22.     Samochod C(rej, moc, waga, rodzaj);
  23.     kat.dodaj(C);
  24.     cin >> rej >> moc >> waga >> rodzaj;
  25.     Samochod D(rej, moc, waga, rodzaj);
  26.     kat.dodaj(D);
  27.     cin >> rej >> moc >> waga >> rodzaj;
  28.     Samochod E(rej, moc, waga, rodzaj);
  29.     kat.dodaj(E);
  30.     cin >> rej >> moc >> waga >> rodzaj;
  31.     Samochod F(rej, moc, waga, rodzaj);
  32.     kat.dodaj(F);
  33.  
  34.     kat.pokaz();
  35.  
  36.     return 0;
  37. }
  38.  
  39. // katalog.cpp
  40. #include "katalog.h"
  41.  
  42. Katalog::Katalog() : ile(0)
  43. {
  44. }
  45.  
  46. Samochod Katalog::korzen()
  47. {
  48.     return kopiec[1];
  49. }
  50.  
  51. void Katalog::dodaj(Samochod car)
  52. {
  53.     unsigned value = car.get_moc();
  54.     int child = ++ile;
  55.     int parent = child/2;
  56.     while (parent && kopiec[parent].get_moc() > value)
  57.     {
  58.         kopiec[child] = kopiec[parent];
  59.         child = parent;
  60.         parent /= 2;
  61.     }
  62.     kopiec[child] = car;
  63. }
  64.  
  65. void Katalog::usun_korzen()
  66. {
  67.     Samochod last = kopiec[ile--];
  68.     int x = 1;
  69.     int c = minChild(1);
  70.     while (c && kopiec[c].get_moc() < last.get_moc())
  71.     {
  72.         kopiec[x] = kopiec[c];
  73.         x = c;
  74.         c = minChild(c);  // returns 0 if no children
  75.     }
  76.     kopiec[x] = last;
  77. }
  78.  
  79. int Katalog::minChild(int parent)
  80. {
  81.     int left = 2*parent;
  82.     int right = left + 1;
  83.     if (left > ile)
  84.         return 0;
  85.     if (right > ile || kopiec[left].get_moc() < kopiec[right].get_moc())
  86.         return left;
  87.     return right;
  88. }
  89.  
  90. void Katalog::pokaz()
  91. {
  92.     while(ile > 0)
  93.     {
  94.         korzen().drukuj();
  95.         usun_korzen();
  96.     }
  97. }
  98.  
  99. // katalog.h
  100. #include "samochod.h"
  101.  
  102. class Katalog
  103. {
  104.     Samochod kopiec[10];
  105.     int ile;
  106. public:
  107.     Katalog();
  108.     void dodaj(Samochod);
  109.     Samochod korzen();
  110.     void usun_korzen();
  111.     int minChild(int);
  112.     void pokaz();
  113. };
  114.  
  115. // samochod.h
  116. #include <iostream>
  117.  
  118. using namespace std;
  119.  
  120. class Samochod
  121. {
  122.     string rejestr;
  123.     unsigned moc;
  124.     double waga;
  125.     char rodzaj;
  126. public:
  127.     Samochod();
  128.     Samochod(string, unsigned, double, char);
  129.     void set_rejestr(string);
  130.     void set_moc(unsigned);
  131.     void set_waga(double);
  132.     void set_rodzaj(char);
  133.     void drukuj();
  134.     const string get_rejestr();
  135.     const unsigned get_moc();
  136.     const double get_waga();
  137.     const char get_rodzaj();
  138. };
  139.  
  140. // samochod.cpp
  141. #include "samochod.h"
  142.  
  143. Samochod::Samochod() : rejestr(""), moc(0), waga(0), rodzaj('x')
  144. {
  145. }
  146.  
  147. Samochod::Samochod(string r, unsigned m, double w, char rodz) : rejestr(r), moc(m), waga(w), rodzaj(rodz)
  148. {
  149. }
  150.  
  151. void Samochod::set_rejestr(string rej)
  152. {
  153.     rejestr = rej;
  154. }
  155.  
  156. void Samochod::set_moc(unsigned m)
  157. {
  158.     moc = m;
  159. }
  160.  
  161. void Samochod::set_waga(double w)
  162. {
  163.     waga = w;
  164. }
  165.  
  166. void Samochod::set_rodzaj(char r)
  167. {
  168.     rodzaj = r;
  169. }
  170.  
  171. void Samochod::drukuj()
  172. {
  173.     cout << rejestr << " " << moc << " ";
  174. }
  175.  
  176. const string Samochod::get_rejestr()
  177. {
  178.     return rejestr;
  179. }
  180.  
  181. const unsigned Samochod::get_moc()
  182. {
  183.     return moc;
  184. }
  185.  
  186. const double Samochod::get_waga()
  187. {
  188.     return waga;
  189. }
  190.  
  191. const char Samochod::get_rodzaj()
  192. {
  193.     return rodzaj;
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement