Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Dijkstra.cpp : Ten plik zawiera funkcję „main”. W nim rozpoczyna się i kończy wykonywanie programu.
- //
- #include <iostream>
- #include <fstream>
- #include <cstdlib>
- #include <string>
- #include <windows.h>
- #include <list>
- #include <vector>
- using namespace std;
- struct wierzcholek_listy_podwieszanej
- {
- wierzcholek_listy_podwieszanej* next, * prev;
- int docelowy;
- double waga;
- };
- struct element_listy_sasiedztwa
- {
- //wierzcholek_listy_podwieszanej start;
- //wierzcholek_listy_podwieszanej* drogi;
- element_listy_sasiedztwa* pNext;
- int nr_wierz;
- };
- bool sprawdz_czy_skierowany(string skierowany)
- {
- if (skierowany == "->")
- {
- return true;
- }
- else return false;
- }
- bool sprawdz_czy_jestem_na_liscie(int x, element_listy_sasiedztwa* pHead)
- {
- while (pHead)
- {
- //auto test = pHead->nr_wierz;
- //element_listy_sasiedztwa test = *pHead;
- if (pHead->nr_wierz == x)
- {
- return true;
- }
- pHead = pHead->pNext;
- }
- return false;
- }
- void DodajNaKoniec_Skierowany(int x, int y, double z, element_listy_sasiedztwa *&pHead)
- {
- if (sprawdz_czy_jestem_na_liscie(x,pHead)==false)
- {
- element_listy_sasiedztwa* w;
- w = new element_listy_sasiedztwa; // tworzenie nowego elementu listy glownej
- w->nr_wierz = x;
- if (pHead) // jesli lista nie jest pusta
- {
- element_listy_sasiedztwa* temp = pHead;
- while (temp->pNext)
- {
- temp = temp->pNext;
- }
- temp->pNext = w;
- }
- else
- pHead = w;
- /* wierzcholek_listy_podwieszanej* p;
- p = new wierzcholek_listy_podwieszanej; // tworzenie nowego elementu listy podwieszanej
- p->docelowy = y;
- p->waga = z;
- p->prev = nullptr;
- p->next = nullptr;
- if (p->next) p->next->prev = p;
- */
- }
- }
- /*void DodajNaPoczatek_Nieskierowany(int x, int y, double z)
- {
- element_listy_sasiedztwa* w;
- w = new element_listy_sasiedztwa; // tworzenie nowego elementu listy glownej
- if (sprawdz_czy_jestem_na_liscie(x))
- {
- w->nr_wierz = x;
- }
- wierzcholek_listy_podwieszanej* p;
- p = new wierzcholek_listy_podwieszanej; // tworzenie nowego elementu listy podwieszanej
- p->docelowy = y;
- p->waga = z;
- p->prev = NULL;
- p->next = L.glowa;
- if (p->next) p->next->prev = p;
- }*/
- void graf_wczytaj(const string graf, element_listy_sasiedztwa *pHead)
- {
- ifstream plik;
- plik.open(graf, ifstream::in);
- if (plik.good())
- {
- int x;
- int y;
- double z;
- string skierowany;
- char dwukropek;
- while (!plik.eof())
- {
- //2 -> 3 : 54
- plik >> x >> skierowany >> y >> dwukropek >> z;
- if (sprawdz_czy_skierowany(skierowany))
- {
- DodajNaKoniec_Skierowany(x, y, z, pHead);
- }
- else
- DodajNaKoniec_Skierowany(x, y, z, pHead);
- }
- }
- cout << "Nie udało się wczytać pliku z grafem";
- };
- void dane_wczytaj(const string dane, element_listy_sasiedztwa* pHead)
- {
- ifstream plik;
- plik.open(dane);
- if (plik.good() == false)
- {
- int x;
- while (!plik.eof())
- {
- plik >> x;
- //policz_odleglosc(x, pHead);
- }
- }
- else
- {
- // return string::npos;
- }
- }
- void policz_odleglosc(int x, element_listy_sasiedztwa* pHead)
- {
- while (pHead)
- {
- if (x == pHead->nr_wierz) // sprawdzenie czy wierzcholek istnieje
- {
- wierzcholek_listy_podwieszanej* drogi;
- drogi = new wierzcholek_listy_podwieszanej;
- }
- }
- cout << "Wierzchołka " << x << "nie ma w grafie";
- }
- void wypisz(element_listy_sasiedztwa* pHead)
- {
- while (pHead)
- {
- std::cout << pHead->nr_wierz << ' ';
- pHead = pHead->pNext;
- }
- }
- static void jak_uzywac(char nazwa)
- {
- cerr << "Uzywasz: " << nazwa << "<options>"
- << "MENU:\n"
- << "\t-g\t PLIK WEJŚCIOWY Z GRAFEM\n"
- << "\t-w\t PLIK WEJŚCIOWY Z WIERZCHOŁKAMI\n"
- << "\t-o\t PLIK WYJŚCIOWY Z GRAFEM"
- << endl;
- };
- int main(int argc, char* argv[])
- {
- element_listy_sasiedztwa* pHead = nullptr;
- const string graf = "graf.txt";
- const string dane = "nr_wierz.txt";
- graf_wczytaj(graf, pHead);
- //std::cout << graf_wczytaj(plik1);
- dane_wczytaj(dane, pHead);
- /* if (argc < 4)
- {
- jak_uzywac(argv[0]);
- return 1;
- }*/
- /*for (int i = 1; i < argc; i++)
- {
- if (argv[i][0] == '-' && argv[i][1] == 'g')
- {
- string linia;
- ifstream strumien("graf.txt");
- if (strumien)
- {
- while (!strumien.eof())
- {
- getline(strumien, linia);
- cout << linia << endl;
- }
- strumien.close();
- }
- else
- {
- cout << "npos";
- }
- }
- else if (*argv[i] == '-g' && argv[i][1] == 'w')
- {
- string linia;
- ifstream strumien("nr_wierz.txt");
- if (strumien)
- {
- while (!strumien.eof())
- {
- getline(strumien, linia);
- cout << linia << endl;
- }
- strumien.close();
- }
- else
- {
- cout << "npos";
- }
- }
- else if (argv[i][0] == '-' && argv[i][1] == 'o')
- {
- ;//plik z wynikami
- }
- }
- */
- wypisz(pHead);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement