Quellcode durchsuchen

Complete shell arguments support - fixed pointers

Jan Potocki vor 5 Jahren
Ursprung
Commit
d696d1dbc5
1 geänderte Dateien mit 15 neuen und 15 gelöschten Zeilen
  1. 15
    15
      pea2plus.cpp

+ 15
- 15
pea2plus.cpp Datei anzeigen

@@ -38,7 +38,7 @@ unsigned tabuStopTime = 60;
38 38
 // Domyslna liczba watkow tabu search
39 39
 unsigned tabuThreadsNumber = 2;
40 40
 
41
-void parseTSPLIB_FULL_MATRIX(const char *filename)
41
+void parseTSPLIB_FULL_MATRIX(const char *filename, Graph **graph)
42 42
 {
43 43
     // Jan Potocki 2017
44 44
     string fileInput;
@@ -61,13 +61,13 @@ void parseTSPLIB_FULL_MATRIX(const char *filename)
61 61
         salesmanDataFile >> fileInput;
62 62
         if(fileInput == "FULL_MATRIX")
63 63
         {
64
-            if(graph != NULL)
65
-                delete graph;
64
+            if(*graph != NULL)
65
+                delete *graph;
66 66
 
67 67
             if(useListGraph)
68
-                graph = new ListGraph(vertex);
68
+                *graph = new ListGraph(vertex);
69 69
             else
70
-                graph = new ArrayGraph(vertex);
70
+                *graph = new ArrayGraph(vertex);
71 71
 
72 72
             do
73 73
                 salesmanDataFile >> fileInput;
@@ -81,7 +81,7 @@ void parseTSPLIB_FULL_MATRIX(const char *filename)
81 81
                     int weight = stoi(fileInput);
82 82
 
83 83
                     if(i != j)
84
-                        graph->addEdge(i, j, weight);
84
+                        (*graph)->addEdge(i, j, weight);
85 85
                 }
86 86
             }
87 87
 
@@ -103,7 +103,7 @@ void parseTSPLIB_FULL_MATRIX(const char *filename)
103 103
     }
104 104
 }
105 105
 
106
-void parseTSPLIB_EUC_2D(const char *filename)
106
+void parseTSPLIB_EUC_2D(const char *filename, Graph **graph)
107 107
 {
108 108
     // Jan Potocki 2017
109 109
     string fileInput;
@@ -128,12 +128,12 @@ void parseTSPLIB_EUC_2D(const char *filename)
128 128
         if(fileInput == "EUC_2D")
129 129
         {
130 130
             if(*graph != NULL)
131
-                delete graph;
131
+                delete *graph;
132 132
 
133 133
             if(useListGraph)
134
-                graph = new ListGraph(vertex);
134
+                *graph = new ListGraph(vertex);
135 135
             else
136
-                graph = new ArrayGraph(vertex);
136
+                *graph = new ArrayGraph(vertex);
137 137
 
138 138
             do
139 139
                 salesmanDataFile >> fileInput;
@@ -162,7 +162,7 @@ void parseTSPLIB_EUC_2D(const char *filename)
162 162
                         float yDiff = yCoord.at(i) - yCoord.at(j);
163 163
                         int weight = nearbyint(sqrt(xDiff * xDiff + yDiff * yDiff));
164 164
 
165
-                        graph->addEdge(i, j, weight);
165
+                        (*graph)->addEdge(i, j, weight);
166 166
                     }
167 167
                 }
168 168
             }
@@ -219,12 +219,12 @@ int main(int argc, char *argv[])
219 219
             else if(strcmp(argv[i], "-fmatrix") == 0)
220 220
             {
221 221
                 i++;
222
-                parseTSPLIB_FULL_MATRIX(argv[i], graph);
222
+                parseTSPLIB_FULL_MATRIX(argv[i], &graph);
223 223
             }
224 224
             else if(strcmp(argv[i], "-feuc2d") == 0)
225 225
             {
226 226
                 i++;
227
-                parseTSPLIB_EUC_2D(argv[i], graph);
227
+                parseTSPLIB_EUC_2D(argv[i], &graph);
228 228
             }
229 229
             else if(strcmp(argv[i], "-h") == 0)
230 230
             {
@@ -597,7 +597,7 @@ int main(int argc, char *argv[])
597 597
                 cout << "Podaj nazwe pliku: ";
598 598
                 cin >> filename;
599 599
 
600
-                parseTSPLIB_FULL_MATRIX(filename.c_str(), graph);
600
+                parseTSPLIB_FULL_MATRIX(filename.c_str(), &graph);
601 601
             }
602 602
             break;
603 603
             case 9:
@@ -608,7 +608,7 @@ int main(int argc, char *argv[])
608 608
                 cout << "Podaj nazwe pliku: ";
609 609
                 cin >> filename;
610 610
 
611
-                parseTSPLIB_EUC_2D(filename.c_str(), graph);
611
+                parseTSPLIB_EUC_2D(filename.c_str(), &graph);
612 612
             }
613 613
             break;
614 614
             case 0:

Laden…
Abbrechen
Speichern