Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.93 KB | None | 0 0
  1. // Dijkstra.cpp : Ten plik zawiera funkcję „main”. W nim rozpoczyna się i kończy wykonywanie programu.
  2. //
  3.  
  4. #include <iostream>
  5. #include <fstream>
  6. #include <cstdlib>
  7. #include <string>
  8. #include <windows.h>
  9. #include <list>
  10. #include <vector>
  11.  
  12. using namespace std;
  13.  
  14.  
  15. struct wierzcholek_listy_podwieszanej
  16. {
  17.  
  18. wierzcholek_listy_podwieszanej* next, * prev;
  19.  
  20. int docelowy;
  21. double waga;
  22.  
  23. };
  24.  
  25. struct element_listy_sasiedztwa
  26. {
  27.  
  28. //wierzcholek_listy_podwieszanej start;
  29. //wierzcholek_listy_podwieszanej* drogi;
  30.  
  31. element_listy_sasiedztwa* pNext;
  32.  
  33. int nr_wierz;
  34.  
  35.  
  36. };
  37.  
  38.  
  39.  
  40. bool sprawdz_czy_skierowany(string skierowany)
  41. {
  42.  
  43. if (skierowany == "->")
  44. {
  45. return true;
  46. }
  47. else return false;
  48.  
  49. }
  50.  
  51. bool sprawdz_czy_jestem_na_liscie(int x, element_listy_sasiedztwa* pHead)
  52. {
  53.  
  54. while (pHead)
  55. {
  56. //auto test = pHead->nr_wierz;
  57. //element_listy_sasiedztwa test = *pHead;
  58.  
  59. if (pHead->nr_wierz == x)
  60. {
  61. return true;
  62. }
  63.  
  64. pHead = pHead->pNext;
  65.  
  66.  
  67. }
  68. return false;
  69. }
  70.  
  71.  
  72.  
  73. void DodajNaKoniec_Skierowany(int x, int y, double z, element_listy_sasiedztwa *&pHead)
  74. {
  75.  
  76.  
  77. if (sprawdz_czy_jestem_na_liscie(x,pHead)==false)
  78. {
  79. element_listy_sasiedztwa* w;
  80. w = new element_listy_sasiedztwa; // tworzenie nowego elementu listy glownej
  81.  
  82. w->nr_wierz = x;
  83. if (pHead) // jesli lista nie jest pusta
  84. {
  85. element_listy_sasiedztwa* temp = pHead;
  86.  
  87. while (temp->pNext)
  88. {
  89. temp = temp->pNext;
  90. }
  91. temp->pNext = w;
  92. }
  93. else
  94. pHead = w;
  95.  
  96.  
  97. /* wierzcholek_listy_podwieszanej* p;
  98. p = new wierzcholek_listy_podwieszanej; // tworzenie nowego elementu listy podwieszanej
  99.  
  100. p->docelowy = y;
  101. p->waga = z;
  102. p->prev = nullptr;
  103. p->next = nullptr;
  104. if (p->next) p->next->prev = p;
  105. */
  106. }
  107. }
  108.  
  109.  
  110.  
  111.  
  112.  
  113. /*void DodajNaPoczatek_Nieskierowany(int x, int y, double z)
  114. {
  115.  
  116. element_listy_sasiedztwa* w;
  117. w = new element_listy_sasiedztwa; // tworzenie nowego elementu listy glownej
  118.  
  119. if (sprawdz_czy_jestem_na_liscie(x))
  120. {
  121. w->nr_wierz = x;
  122. }
  123.  
  124. wierzcholek_listy_podwieszanej* p;
  125. p = new wierzcholek_listy_podwieszanej; // tworzenie nowego elementu listy podwieszanej
  126.  
  127. p->docelowy = y;
  128. p->waga = z;
  129. p->prev = NULL;
  130. p->next = L.glowa;
  131. if (p->next) p->next->prev = p;
  132.  
  133.  
  134.  
  135. }*/
  136.  
  137.  
  138.  
  139. void graf_wczytaj(const string graf, element_listy_sasiedztwa *pHead)
  140. {
  141. ifstream plik;
  142.  
  143. plik.open(graf, ifstream::in);
  144.  
  145.  
  146. if (plik.good())
  147. {
  148. int x;
  149. int y;
  150. double z;
  151. string skierowany;
  152. char dwukropek;
  153.  
  154. while (!plik.eof())
  155. {
  156. //2 -> 3 : 54
  157. plik >> x >> skierowany >> y >> dwukropek >> z;
  158.  
  159.  
  160. if (sprawdz_czy_skierowany(skierowany))
  161. {
  162. DodajNaKoniec_Skierowany(x, y, z, pHead);
  163. }
  164. else
  165. DodajNaKoniec_Skierowany(x, y, z, pHead);
  166.  
  167. }
  168.  
  169. }
  170.  
  171. cout << "Nie udało się wczytać pliku z grafem";
  172. };
  173.  
  174. void dane_wczytaj(const string dane, element_listy_sasiedztwa* pHead)
  175. {
  176. ifstream plik;
  177. plik.open(dane);
  178.  
  179. if (plik.good() == false)
  180. {
  181. int x;
  182. while (!plik.eof())
  183. {
  184. plik >> x;
  185. //policz_odleglosc(x, pHead);
  186. }
  187. }
  188. else
  189. {
  190. // return string::npos;
  191. }
  192. }
  193.  
  194. void policz_odleglosc(int x, element_listy_sasiedztwa* pHead)
  195. {
  196. while (pHead)
  197. {
  198. if (x == pHead->nr_wierz) // sprawdzenie czy wierzcholek istnieje
  199. {
  200. wierzcholek_listy_podwieszanej* drogi;
  201. drogi = new wierzcholek_listy_podwieszanej;
  202.  
  203.  
  204.  
  205.  
  206. }
  207.  
  208. }
  209.  
  210. cout << "Wierzchołka " << x << "nie ma w grafie";
  211.  
  212. }
  213.  
  214. void wypisz(element_listy_sasiedztwa* pHead)
  215. {
  216. while (pHead)
  217. {
  218. std::cout << pHead->nr_wierz << ' ';
  219. pHead = pHead->pNext;
  220. }
  221.  
  222. }
  223.  
  224. static void jak_uzywac(char nazwa)
  225. {
  226. cerr << "Uzywasz: " << nazwa << "<options>"
  227. << "MENU:\n"
  228. << "\t-g\t PLIK WEJŚCIOWY Z GRAFEM\n"
  229. << "\t-w\t PLIK WEJŚCIOWY Z WIERZCHOŁKAMI\n"
  230. << "\t-o\t PLIK WYJŚCIOWY Z GRAFEM"
  231. << endl;
  232.  
  233. };
  234.  
  235. int main(int argc, char* argv[])
  236. {
  237. element_listy_sasiedztwa* pHead = nullptr;
  238. const string graf = "graf.txt";
  239. const string dane = "nr_wierz.txt";
  240.  
  241. graf_wczytaj(graf, pHead);
  242. //std::cout << graf_wczytaj(plik1);
  243. dane_wczytaj(dane, pHead);
  244.  
  245.  
  246. /* if (argc < 4)
  247. {
  248. jak_uzywac(argv[0]);
  249. return 1;
  250. }*/
  251.  
  252. /*for (int i = 1; i < argc; i++)
  253. {
  254. if (argv[i][0] == '-' && argv[i][1] == 'g')
  255. {
  256.  
  257. string linia;
  258.  
  259. ifstream strumien("graf.txt");
  260.  
  261. if (strumien)
  262. {
  263. while (!strumien.eof())
  264. {
  265. getline(strumien, linia);
  266. cout << linia << endl;
  267. }
  268. strumien.close();
  269. }
  270. else
  271. {
  272. cout << "npos";
  273. }
  274. }
  275. else if (*argv[i] == '-g' && argv[i][1] == 'w')
  276. {
  277. string linia;
  278.  
  279. ifstream strumien("nr_wierz.txt");
  280.  
  281. if (strumien)
  282. {
  283. while (!strumien.eof())
  284. {
  285. getline(strumien, linia);
  286. cout << linia << endl;
  287. }
  288. strumien.close();
  289. }
  290. else
  291. {
  292. cout << "npos";
  293. }
  294. }
  295. else if (argv[i][0] == '-' && argv[i][1] == 'o')
  296. {
  297. ;//plik z wynikami
  298. }
  299. }
  300. */
  301. wypisz(pHead);
  302.  
  303.  
  304. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement