Advertisement
mar1985

Untitled

May 28th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.01 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. struct Oosoba
  8. {
  9. string imie, nazwisko;
  10. int wiek;
  11. Oosoba *next;
  12. };
  13. struct Lista
  14. {
  15. Oosoba *head;
  16. };
  17. Oosoba* nowa_osoba(string imie, string nazwisko, int wiek)
  18. {
  19. Oosoba* osoba = new Oosoba;
  20. osoba->imie = imie;
  21. osoba->nazwisko = nazwisko;
  22. osoba->wiek = wiek;
  23. osoba->next = NULL;
  24. return osoba;
  25. }
  26.  
  27. Lista* nowa_lista()
  28. {
  29. Lista* lista = new Lista;
  30. lista->head = NULL;
  31.  
  32. return lista;
  33. }
  34.  
  35. void dodaj_osobe(Lista* lista, Oosoba* osoba)
  36. {
  37.  
  38. if (!lista->head)
  39. {
  40. lista->head = osoba;
  41. }
  42. else
  43. {
  44. Oosoba* tmp = lista->head;
  45.  
  46. while (tmp->next != NULL)
  47. {
  48. tmp = tmp->next;
  49. }
  50.  
  51. tmp->next = osoba;
  52. }
  53. }
  54.  
  55. void drukuj_liste(Lista* lista)
  56. {
  57. if (lista != NULL) {
  58. Oosoba* tmp = lista->head;
  59.  
  60. while (tmp != NULL)
  61. {
  62. cout << "Imie: " << tmp->imie << ", Nazwisko: " << tmp->nazwisko << ", Wiek: " << tmp->wiek << endl;
  63.  
  64. tmp = tmp->next;
  65. }
  66. }
  67.  
  68. }
  69.  
  70. int rozmiar_listy(Lista* lista)
  71. {
  72. Oosoba* tmp = lista->head;
  73. int rozmiar = 0;
  74.  
  75. while (tmp != NULL)
  76. {
  77. rozmiar++;
  78.  
  79. tmp = tmp->next;
  80. }
  81.  
  82. return rozmiar;
  83. }
  84.  
  85. Oosoba* osoba_na_liscie(Lista* lista, int indeks)
  86. {
  87. Oosoba* tmp = lista->head;
  88.  
  89. for(int i = 0; i < indeks; i++)
  90. {
  91. tmp = tmp->next;
  92. }
  93.  
  94. return tmp;
  95. }
  96.  
  97. void kasuj_osobe(Lista* lista, int indeks)
  98. {
  99. Oosoba* tmp = lista->head;
  100.  
  101. if (indeks == 0)
  102. {
  103. lista->head = tmp->next;
  104. }
  105. else
  106. {
  107. for(int i = 0; i < indeks - 1; i++)
  108. {
  109. tmp = tmp->next;
  110. }
  111.  
  112. tmp->next = tmp->next->next;
  113.  
  114. }
  115. }
  116.  
  117. void dodaj_osobe(Lista* lista, Oosoba* osoba, int indeks)
  118. {
  119. if (indeks == 0)
  120. {
  121. osoba->next = lista->head;
  122. lista->head = osoba;
  123. }
  124. else
  125. {
  126. Oosoba *tmp = lista->head;
  127.  
  128. for (int i = 0; i < indeks - 1; i++)
  129. {
  130. tmp = tmp->next;
  131. }
  132.  
  133. osoba->next = tmp->next;
  134. tmp->next = osoba;
  135. }
  136. }
  137.  
  138.  
  139. void kasuj_liste(Lista *&head)
  140. {
  141. Oosoba* temp;
  142. Oosoba* _head;
  143. if (head != NULL)
  144. _head = head->head;
  145. else _head = NULL;
  146.  
  147. while (_head) {
  148. temp = _head->next;
  149. delete _head;
  150. _head = temp;
  151. }
  152. head = NULL;
  153. }
  154. int main ()
  155. {
  156. Lista* lista = nowa_lista();
  157.  
  158. int n;
  159. string imie;
  160. string nazwisko;
  161. int wiek;
  162. int licznik=0;
  163.  
  164.  
  165. cout << "podaj ilosc osob jaka chcesz dodac do bazy" << endl;
  166. cin >> n;
  167.  
  168. cout << "chcesz wpisac dane " << n <<" osob" << endl;
  169.  
  170. do
  171. {
  172. licznik++;
  173. cout << "wpisz dane " << licznik <<" osoby" << endl;
  174. cout << "Imie:";
  175. cin >> imie;
  176. cout << "Nazwisko:";
  177. cin >> nazwisko;
  178. cout << "Wiek:";
  179. cin >> wiek;
  180.  
  181. dodaj_osobe(lista, nowa_osoba(imie, nazwisko, wiek));
  182.  
  183. }
  184. while (licznik!=n);
  185.  
  186. drukuj_liste(lista);
  187.  
  188. Oosoba* tmp;
  189. Oosoba* przedostatnia = osoba_na_liscie(lista, rozmiar_listy(lista) - 1 - 1);
  190. for (int i = 0; i < rozmiar_listy(lista); i++)
  191. {
  192. tmp = osoba_na_liscie(lista, i);
  193.  
  194. if (tmp->wiek > przedostatnia->wiek)
  195. {
  196. kasuj_osobe(lista, i);
  197.  
  198. cout << "Osoba na pozycji " << i+1 << " ma wiekszy wiek od przedostatniej" << endl;
  199. cout << "Popraw dane " << i+1 <<" osoby" << endl;
  200. cout << "Imie:";
  201. cin >> imie;
  202. cout << "Nazwisko:";
  203. cin >> nazwisko;
  204. cout << "Wiek:";
  205. cin >> wiek;
  206.  
  207. dodaj_osobe(lista, nowa_osoba(imie, nazwisko, wiek), i);
  208. }
  209. }
  210. cout << "lista po podmianie" << endl;
  211. drukuj_liste(lista);
  212. kasuj_liste(lista);
  213. //if (lista != NULL)
  214. drukuj_liste(lista);
  215. return 0;
  216.  
  217. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement