Advertisement
Guest User

Untitled

a guest
Jan 21st, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. #include "ListaPracownikow.h"
  2.  
  3. #include "Pracownik.h"
  4.  
  5.  
  6. ListaPracownikow::ListaPracownikow() : m_nLiczbaPracownikow(0), m_pPoczatek(nullptr)
  7. {
  8. }
  9.  
  10.  
  11. ListaPracownikow::~ListaPracownikow()
  12. {
  13. Pracownik *s = m_pPoczatek;
  14. Pracownik *tmp;
  15.  
  16. while (s != nullptr) {
  17. tmp = s;
  18. s = s->m_pNastepny;
  19. delete tmp;
  20. }
  21. }
  22.  
  23. void ListaPracownikow::Dodaj(const Pracownik & p) {
  24.  
  25.  
  26. Pracownik *cp = new Pracownik(p);
  27.  
  28. if (m_pPoczatek == nullptr) {
  29. cp->m_pNastepny = nullptr;
  30. m_pPoczatek = cp;
  31. m_nLiczbaPracownikow = 1;
  32. return;
  33. }
  34.  
  35. Pracownik *old = nullptr;
  36. Pracownik *s = m_pPoczatek;
  37. // Pracownik *tmp;
  38.  
  39. while (s != nullptr) {
  40. auto cmpp = cp->Porownaj(*s);
  41. if (cmpp < 0) {
  42.  
  43.  
  44. if (old != nullptr) {
  45. old->m_pNastepny = cp;
  46. cp->m_pNastepny = s;
  47. }
  48. else {
  49. m_pPoczatek = cp;
  50. cp->m_pNastepny = s;
  51.  
  52. }
  53. m_nLiczbaPracownikow++;
  54.  
  55.  
  56. /*
  57. tmp = s->m_pNastepny;
  58. s->m_pNastepny = cp;
  59. cp->m_pNastepny = tmp;
  60. m_nLiczbaPracownikow++;*/
  61. return;
  62. }
  63. else if (cmpp == 0) {
  64. delete cp;
  65. return;
  66. }
  67. old = s;
  68. s = s->m_pNastepny;
  69. }
  70.  
  71. s = old;
  72. s->m_pNastepny = cp;
  73. cp->m_pNastepny = nullptr;
  74. m_nLiczbaPracownikow++;
  75.  
  76. }
  77. void ListaPracownikow::Usun(const Pracownik & wzorzec) {
  78. Pracownik *old = nullptr;
  79. Pracownik *s = m_pPoczatek;
  80.  
  81. while (s != nullptr) {
  82. if (wzorzec.Porownaj(*s) == 0) {
  83.  
  84. if (old != nullptr) {
  85. old->m_pNastepny = s->m_pNastepny;
  86. }
  87. else {
  88. m_pPoczatek = s->m_pNastepny;
  89. }
  90. delete s;
  91. m_nLiczbaPracownikow--;
  92.  
  93. break;
  94. }
  95. old = s;
  96. s = s->m_pNastepny;
  97. }
  98. }
  99.  
  100. void ListaPracownikow::WypiszPracownikow() const {
  101. Pracownik *s = m_pPoczatek;
  102.  
  103. while (s != nullptr) {
  104. s->Wypisz();
  105. std::cout << std::endl;
  106. s = s->m_pNastepny;
  107. }
  108. }
  109.  
  110. const Pracownik * ListaPracownikow::Szukaj(const char *nazwisko, const char * imie) const {
  111. Pracownik *s = m_pPoczatek;
  112.  
  113. while (s != nullptr) {
  114. if ( s->SprawdzNazwisko(nazwisko) == 0 && s->SprawdzImie(imie) == 0) {
  115. return s;
  116. }
  117. s = s->m_pNastepny;
  118. }
  119. return nullptr;
  120. }
  121.  
  122. void ListaPracownikow::zapiszDoPliku(Napis &p) {
  123. std::ofstream plik;
  124. plik.open(p.Zwroc());
  125. Pracownik *s = m_pPoczatek;
  126. while (s != nullptr) {
  127. plik << *s;
  128. if (s->m_pNastepny != nullptr) {
  129. plik << std::endl;
  130. }
  131. s = s->m_pNastepny;
  132. }
  133. plik.close();
  134. }
  135. void ListaPracownikow::zaladujZPliku(Napis &p) {
  136. std::ifstream plik;
  137. plik.open(p.Zwroc());
  138.  
  139. Pracownik s;
  140. while (!plik.eof()) {
  141. plik >> s;
  142. Dodaj(s);
  143. }
  144.  
  145. plik.close();
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement