Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.49 KB | None | 0 0
  1. // Historia panstw.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4.  
  5.  
  6. #include "stdafx.h"
  7. #include<iostream>
  8. #include <string>
  9. #include <fstream>
  10.  
  11. using namespace std;
  12.  
  13. struct Wydarzenie
  14. {
  15. string zdarzenie;
  16. int data;
  17. Wydarzenie *nast;
  18. };
  19.  
  20.  
  21.  
  22.  
  23. struct Panstwo // struktura zawierajace dane panstwa
  24. {
  25. string nazwapanstwa;
  26. string kontynent;
  27. string iglowapanstwa; //imie glowy panstwa
  28. string nglowapanstwa; //nazwisko glowy panstwa
  29. Panstwo *nastepny; // wskaznik na nastepny element listy
  30. Wydarzenie *wydarzenia;
  31.  
  32. Panstwo() // konstruktor - wywolywany przy tworzeniu obiektu
  33. {
  34.  
  35. // wczytujemy dane
  36. cout << "Podaj nazwe panstwa: ";
  37. getchar(); getline(cin, nazwapanstwa);
  38. cout << "Podaj nazwe kontynentu: ";
  39. cin >> kontynent;
  40. cout << "Podaj imie glowy pansta: ";
  41. cin >> iglowapanstwa;
  42. cout << "Podaj nazwisko glowy pansta: ";
  43. cin >> nglowapanstwa;
  44.  
  45. // wskazniki ustawiamy na NULL
  46. nastepny = NULL;
  47. }
  48.  
  49. void wypisz()
  50. {
  51. cout << "Panstwo: " << nazwapanstwa<< " Kontynent: " << kontynent << " Glowa panstwa: " << iglowapanstwa<<" " <<nglowapanstwa <<endl;
  52. }
  53. };
  54.  
  55.  
  56.  
  57. void dodaj_Panstwo(Panstwo **glowa)
  58. {
  59. Panstwo *nowa = new Panstwo; // utworzenie nowej Panstwa
  60. Panstwo *pomoc = (*glowa), *pomoc1 = NULL; // wskazniki pomocnicze posluza do poruszania sie po liscie
  61.  
  62. while (pomoc != NULL && (pomoc->nazwapanstwa).compare(nowa->nazwapanstwa) == -1) // dopoki nie wyszlismy za liste i nazwisko na liscie jest przed nowym nazwiskiem poruszamy sie dalej
  63. {
  64. pomoc1 = pomoc; // pomoc1 zawsze wskazuje poprzednika pomoc
  65. pomoc = pomoc->nastepny;
  66. }
  67.  
  68. if (pomoc != NULL && (pomoc->nazwapanstwa).compare(nowa->nazwapanstwa) == 0) // Panstwo z podanym nazwiskiem juz istanieje
  69. {
  70. cout << "Panstwo " << nowa->nazwapanstwa << " juz istanieje w liscie panstw\n";
  71. delete nowa; // usuniecie obiektu
  72. }
  73. else if ((*glowa) == NULL || (pomoc == (*glowa) && (pomoc->nazwapanstwa).compare(nowa->nazwapanstwa) == 1)) // nowy element bedzie glowa listy
  74. {
  75. nowa->nastepny = (*glowa);
  76. (*glowa) = nowa;
  77. }
  78. else // dodajemy Panstwo w srodku lub na koncu listy
  79. {
  80. pomoc1->nastepny = nowa;
  81. nowa->nastepny = pomoc;
  82. }
  83. }
  84.  
  85. void wyszukaj_Panstwo(Panstwo *glowa, string a)
  86. {
  87. while (glowa != NULL && (glowa->nazwapanstwa).compare(a) != 0) // dopoki nie znajdziemy panstwa z podanya nazwaub nie przeszukamy calej listy panstw
  88. glowa = glowa->nastepny;
  89.  
  90. if (glowa == NULL)
  91. cout << "Nie ma Panstwa " << a << endl;
  92. else
  93. glowa->wypisz();
  94. }
  95.  
  96. void edytuj_Panstwo(Panstwo *glowa, string a)
  97. {
  98. string nkontynent;
  99. string niglowapanstwa; //imie glowy panstwa
  100. string nnglowapanstwa; //nazwisko glowy panstwa
  101.  
  102. while (glowa != NULL && (glowa->nazwapanstwa).compare(a) != 0) // dopoki nie znajdziemy panstwa z podanya nazwaub nie przeszukamy calej listy panstw
  103. glowa = glowa->nastepny;
  104.  
  105. if (glowa == NULL)
  106. cout << "Nie ma Panstwa " << a << endl;
  107. else
  108. {
  109. cout << "Podaj nowa nazwe kontynentu: ";
  110. cin >> nkontynent;
  111. cout << "Podaj nowe imie glowy pansta: ";
  112. cin >> niglowapanstwa;
  113. cout << "Podaj nowe nazwisko glowy pansta: ";
  114. cin >> nnglowapanstwa;
  115. glowa->kontynent = nkontynent;
  116. glowa->iglowapanstwa = niglowapanstwa;
  117. glowa->nglowapanstwa = nnglowapanstwa;
  118. glowa->wypisz();
  119. }
  120. }
  121.  
  122.  
  123.  
  124.  
  125. void wypisz_panstwa(Panstwo *glowa)
  126. {
  127. cout << "Historia Panstw:\n";
  128.  
  129. while (glowa != NULL)
  130. {
  131. glowa->wypisz(); // wypisanie 1 panstwa
  132. glowa = glowa->nastepny; // przejscie na kolejny element
  133. }
  134. }
  135.  
  136. bool usun_Panstwo(Panstwo **glowa, string a)
  137. {
  138. if ((*glowa) == NULL) // lista jest pusta
  139. return false;
  140. Panstwo *pomoc = (*glowa), *pomoc1 = NULL; // wskazniki pomocnicze posluza do poruszania sie po liscie
  141.  
  142. while (pomoc != NULL && (pomoc->nazwapanstwa).compare(a) != 0) // dopoki nie znajdziemy Panstwa z podanym nazwapanstwa lub nie przeszukamy calej Histori panstw
  143. {
  144. pomoc1 = pomoc;
  145. pomoc = pomoc->nastepny;
  146. }
  147.  
  148. if (pomoc == NULL) // wyszlismy za liste - nie ma takiego nazwapanstwa na liscie
  149. return false;
  150. else if (pomoc == (*glowa)) // usuwamy koniec
  151. {
  152. (*glowa) = (*glowa)->nastepny;
  153. delete pomoc;
  154. }
  155. else // usuwamy z srodka lub konca listy
  156. {
  157. pomoc1->nastepny = pomoc->nastepny;
  158. delete pomoc;
  159. }
  160. return true;
  161. }
  162.  
  163. int main()
  164. {
  165. char instrukcja;
  166. string nazwapanstwa;
  167. Panstwo *glowa = NULL; // glowa listy - wskaznik na pierwszy element
  168. cout << "Historia Panstw - operacje\n"
  169. << "d - dodanie Panstwa\n"
  170. << "s - wyszukanie Panstwa\n"
  171. << "e - edytowanie Panstwa\n"
  172. << "w - wypisanie calej Histori Panstw\n"
  173. << "u - usuniecie Panstwa\n"
  174. << "x - koniec programu\n";
  175.  
  176. while (cin >> instrukcja)
  177. {
  178. switch (instrukcja)
  179. {
  180. case 'd':
  181. dodaj_Panstwo(&glowa);
  182. break;
  183. case 's':
  184. cout << "Podaj nazwe panstwa: ";
  185. cin >> nazwapanstwa;
  186. wyszukaj_Panstwo(glowa, nazwapanstwa);
  187. break;
  188. case 'e':
  189. cout << "Podaj nazwe panstwa: ";
  190. cin >> nazwapanstwa;
  191. edytuj_Panstwo(glowa, nazwapanstwa);
  192. break;
  193. case 'w':
  194. wypisz_panstwa(glowa);
  195. break;
  196. case 'u':
  197. cout << "Podaj nazwe panstwa: ";
  198. cin >> nazwapanstwa;
  199. if (!usun_Panstwo(&glowa, nazwapanstwa))
  200. cout << "Nie odnaleziono Panstwa z podanym nazwapanstwa" << endl;
  201. else
  202. cout << "Panstwo z podanym nazwapanstwa zostala usunieta" << endl;
  203. break;
  204. case 'x':
  205. exit(0);
  206. break;
  207. default:
  208. cout << "Musisz wybrac jedna z opcji: d - dodawanie, s - wyszukiwanie, w - wypisanie zawartosci lub u - usuwanie\n";
  209. break;
  210. }
  211. }
  212.  
  213. return 0;
  214. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement