Rozpoczęto prace nad projektem
This commit is contained in:
2729
Projekt/Doxyfile
Normal file
2729
Projekt/Doxyfile
Normal file
File diff suppressed because it is too large
Load Diff
2
Projekt/Makefile
Normal file
2
Projekt/Makefile
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
build:
|
||||||
|
g++ -Iinclude main.cpp
|
||||||
2610
Projekt/include/cxxopts.hpp
Normal file
2610
Projekt/include/cxxopts.hpp
Normal file
File diff suppressed because it is too large
Load Diff
81
Projekt/main.cpp
Normal file
81
Projekt/main.cpp
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
|
||||||
|
/***
|
||||||
|
* 13. Kurier ma za zadanie zawieść towar do klientów w różnych lokalizacjach i powrócić do miejsca, z którego wyjechał. Kurier musi odwiedzić każdego klienta raz i tylko raz. Należy
|
||||||
|
znaleźć zamkniętą najkrótszą drogę, która umożliwia odwiedzenie wszystkich klientów.
|
||||||
|
W pliku wejściowym zapisane są długości dróg pomiędzy miastami. Drogi zapisane
|
||||||
|
są w następujący sposób:
|
||||||
|
(<klient A> - <klient B> : <odległość>).
|
||||||
|
Niektóre drogi nie są symetryczne, tzn. jest pewna różnica między drogą tam a z powrotem.
|
||||||
|
Zapis (<klient C> -> <klient D> : <odległość CD>), oznacza długość drogi jednokierunkowej
|
||||||
|
od klienta C do klienta D. Poszczególne drogi są rozdzielone przecinkami. Nie jest podana
|
||||||
|
liczba dróg. Jeżeli nie jest możliwe wyznaczenie drogi, program zgłasza odpowiedni
|
||||||
|
komunikat. Przykładowy plik wejściowy:
|
||||||
|
(1 - 2 : 4.5), (4 -> 3:
|
||||||
|
4.5),
|
||||||
|
(4 - 2: 0.4)
|
||||||
|
W pliku wynikowym należy zapisać drogę kuriera (kolejność odwiedzania klientów i długość
|
||||||
|
drogi).
|
||||||
|
Program uruchamiany jest z linii poleceń z potrzebnymi przełącznikami, natomiast
|
||||||
|
uruchomienie programu bez parametrów powoduje wypisanie krótkiej instrukcji **/
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <iomanip>
|
||||||
|
#include <string>
|
||||||
|
#include <cxxopts.hpp>
|
||||||
|
cxxopts::Options options("Kurier", "Program rozwiązujący problem kuriera");
|
||||||
|
char helpText[] = "To jest program rozwiązujący problem kuriera. Użycie: kurier -i [plik wejściowy] -o [plik wyjściowy]";
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Funkcja parsująca dane wejściowe.
|
||||||
|
*
|
||||||
|
* @details Funkcja pobiera dane wejściowe z przekazanej ścieżki do pliku. Plik zawiera długości dróg pomiędzy poszczególnymi miastami w formacie (<klient A> - <klient B> : <odległość>).
|
||||||
|
*
|
||||||
|
* @param inputFile Ścieżka do pliku wejściowego
|
||||||
|
*
|
||||||
|
* @return iterator pliku
|
||||||
|
*/
|
||||||
|
int parseInput(char* inputFile){
|
||||||
|
fopen(inputFile, "r");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @brief Główna funkcja.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
int main (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
|
||||||
|
options.add_options()
|
||||||
|
("d,debug", "Włącza tryb debugowania") // a bool parameter
|
||||||
|
("h,help", "Pokazuje pomoc") // a bool parameter
|
||||||
|
("i,input", "Nazwa pliku wejściowego", cxxopts::value<std::string>())
|
||||||
|
("o,output", "Nazwa pliku wyjściowego", cxxopts::value<std::string>())
|
||||||
|
("v,verbose", "Verbose output", cxxopts::value<bool>()->default_value("false"));
|
||||||
|
|
||||||
|
auto result = options.parse(argc, argv);
|
||||||
|
|
||||||
|
|
||||||
|
if (result.count("help") || argc == 1){
|
||||||
|
std::cout << options.help() << std::endl;
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
bool debug = result["debug"].as<bool>();
|
||||||
|
std::string plikWejsciowy;
|
||||||
|
if (result.count("input"))
|
||||||
|
plikWejsciowy = result["input"].as<std::string>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (debug == true) {
|
||||||
|
for (int i = 0; i < argc; i++) {
|
||||||
|
std::cout << argv[i] << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user