Complete shell arguments support - fixed pointers

This commit is contained in:
Jan Potocki
2019-11-18 17:27:41 +01:00
parent 9d873f9e5d
commit d696d1dbc5
+15 -15
View File
@@ -38,7 +38,7 @@ unsigned tabuStopTime = 60;
// Domyslna liczba watkow tabu search // Domyslna liczba watkow tabu search
unsigned tabuThreadsNumber = 2; unsigned tabuThreadsNumber = 2;
void parseTSPLIB_FULL_MATRIX(const char *filename) void parseTSPLIB_FULL_MATRIX(const char *filename, Graph **graph)
{ {
// Jan Potocki 2017 // Jan Potocki 2017
string fileInput; string fileInput;
@@ -61,13 +61,13 @@ void parseTSPLIB_FULL_MATRIX(const char *filename)
salesmanDataFile >> fileInput; salesmanDataFile >> fileInput;
if(fileInput == "FULL_MATRIX") if(fileInput == "FULL_MATRIX")
{ {
if(graph != NULL) if(*graph != NULL)
delete graph; delete *graph;
if(useListGraph) if(useListGraph)
graph = new ListGraph(vertex); *graph = new ListGraph(vertex);
else else
graph = new ArrayGraph(vertex); *graph = new ArrayGraph(vertex);
do do
salesmanDataFile >> fileInput; salesmanDataFile >> fileInput;
@@ -81,7 +81,7 @@ void parseTSPLIB_FULL_MATRIX(const char *filename)
int weight = stoi(fileInput); int weight = stoi(fileInput);
if(i != j) if(i != j)
graph->addEdge(i, j, weight); (*graph)->addEdge(i, j, weight);
} }
} }
@@ -103,7 +103,7 @@ void parseTSPLIB_FULL_MATRIX(const char *filename)
} }
} }
void parseTSPLIB_EUC_2D(const char *filename) void parseTSPLIB_EUC_2D(const char *filename, Graph **graph)
{ {
// Jan Potocki 2017 // Jan Potocki 2017
string fileInput; string fileInput;
@@ -128,12 +128,12 @@ void parseTSPLIB_EUC_2D(const char *filename)
if(fileInput == "EUC_2D") if(fileInput == "EUC_2D")
{ {
if(*graph != NULL) if(*graph != NULL)
delete graph; delete *graph;
if(useListGraph) if(useListGraph)
graph = new ListGraph(vertex); *graph = new ListGraph(vertex);
else else
graph = new ArrayGraph(vertex); *graph = new ArrayGraph(vertex);
do do
salesmanDataFile >> fileInput; salesmanDataFile >> fileInput;
@@ -162,7 +162,7 @@ void parseTSPLIB_EUC_2D(const char *filename)
float yDiff = yCoord.at(i) - yCoord.at(j); float yDiff = yCoord.at(i) - yCoord.at(j);
int weight = nearbyint(sqrt(xDiff * xDiff + yDiff * yDiff)); int weight = nearbyint(sqrt(xDiff * xDiff + yDiff * yDiff));
graph->addEdge(i, j, weight); (*graph)->addEdge(i, j, weight);
} }
} }
} }
@@ -219,12 +219,12 @@ int main(int argc, char *argv[])
else if(strcmp(argv[i], "-fmatrix") == 0) else if(strcmp(argv[i], "-fmatrix") == 0)
{ {
i++; i++;
parseTSPLIB_FULL_MATRIX(argv[i], graph); parseTSPLIB_FULL_MATRIX(argv[i], &graph);
} }
else if(strcmp(argv[i], "-feuc2d") == 0) else if(strcmp(argv[i], "-feuc2d") == 0)
{ {
i++; i++;
parseTSPLIB_EUC_2D(argv[i], graph); parseTSPLIB_EUC_2D(argv[i], &graph);
} }
else if(strcmp(argv[i], "-h") == 0) else if(strcmp(argv[i], "-h") == 0)
{ {
@@ -597,7 +597,7 @@ int main(int argc, char *argv[])
cout << "Podaj nazwe pliku: "; cout << "Podaj nazwe pliku: ";
cin >> filename; cin >> filename;
parseTSPLIB_FULL_MATRIX(filename.c_str(), graph); parseTSPLIB_FULL_MATRIX(filename.c_str(), &graph);
} }
break; break;
case 9: case 9:
@@ -608,7 +608,7 @@ int main(int argc, char *argv[])
cout << "Podaj nazwe pliku: "; cout << "Podaj nazwe pliku: ";
cin >> filename; cin >> filename;
parseTSPLIB_EUC_2D(filename.c_str(), graph); parseTSPLIB_EUC_2D(filename.c_str(), &graph);
} }
break; break;
case 0: case 0: