From 4eb83efd202f57e71f90448a2bdb4d86034d75c9 Mon Sep 17 00:00:00 2001 From: jakedcolbert Date: Tue, 3 May 2022 14:00:00 -0400 Subject: [PATCH] Worksession progress --- Makefile | 6 +-- project5 | Bin 213640 -> 214192 bytes project5.cc | 22 +------- province.cc | 20 ++++---- test-data/project5.out | 102 +++++++++++-------------------------- test-data/requirement1.out | 39 -------------- test-data/shortest.out | 45 ++++++++++++++++ 7 files changed, 89 insertions(+), 145 deletions(-) delete mode 100644 test-data/requirement1.out create mode 100644 test-data/shortest.out diff --git a/Makefile b/Makefile index 447fd61..936c3e0 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,6 @@ project5: project5.cc province.cc province.h # test the code against an expected output file # this test should grow into a spaceship and end with blinkers test-requirement1: project5 - ./project5 < test-data/requirement1.in > test-data/project5.out - diff test-data/project5.out test-data/requirement1.out > test.diff - wc -l test.diff \ No newline at end of file + ./project5 < test-data/t0502-combo.in > test-data/project5.out + diff test-data/project5.out test-data/shortest.out > test.diff + rm test-data/project5.out \ No newline at end of file diff --git a/project5 b/project5 index e643f06f28f4a7f78e562f093d8cc63646384ff2..68879e562dee026898af2fce94ea1396507b09f5 100755 GIT binary patch delta 40245 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 LU5yd_V!Ho7y!_wd delta 40786 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 toVisit; // use queue to keep track of which town to visit next toVisit.push(start); scheduled[start] = true; - output << "The input data is :" << endl << endl; + output << "The input data is:" << endl << endl; // Visit every town in the queue while (!toVisit.empty()) { int current = toVisit.front(); toVisit.pop(); - output << " "; output << _towns[current]._name << endl; // Add current town's(vertex's) unscheduled neighbors to the queue for (Town::RoadList::iterator neighbor = _towns[current]._roads.begin(); neighbor != _towns[current]._roads.end(); neighbor++) { std::string neighborName = _towns[neighbor->_head]._name; - - output << " "; - output << neighborName << " " << neighbor->_length << " mi"; + output << " " << neighborName << " " << neighbor->_length << " mi"; // if the type is bridge, then add to output if (neighbor ->_isBridge) { @@ -113,7 +110,7 @@ void Province::printAll(int start, std::ostream & output) { } } } - output << endl << endl; + output << endl; } int Province::smallest(double dist[], std::list toVisit, @@ -147,7 +144,7 @@ void Province::printShortestPath(std::ostream & output) const { return; } - output << "The shortest routes from " + _towns[0]._name; + output << "The shortest paths from " + _towns[0]._name; output << " are:" << std::endl << std::endl; // keeps track of the index of the predecessor to each @@ -194,7 +191,7 @@ void Province::printShortestPath(std::ostream & output) const { // print out the data for each non capital town for (int i = 1; i < _numberOfTowns; i++) { - output << " " << "The shortest route from " + _towns[0]._name; + output << " " << "The shortest path from " + _towns[0]._name; output << " to " + _towns[i]._name + " is " << dist[i]; output << " mi:" << std::endl; @@ -214,11 +211,12 @@ void Province::printShortestPath(std::ostream & output) const { // print out the names for each entry in the stack while (!predecessors.empty()) { - output << " " << _towns[predecessors.top()]._name; + output << " " << _towns[predecessors.top()]._name; output << std::endl; predecessors.pop(); } } + cout << endl; } /** @@ -308,11 +306,11 @@ void Province::minSpan(std::ostream & output) const { } output << "The road upgrading goal can be achieved at minimal cost by upgrading:"; - output << std::endl << std::endl; + output << std::endl; // Print names of towns in minimum spanning tree of province for (int i = 0; i < minSpanTree.size(); i++) { - output << " "; + output << " "; output << _towns[minSpanTree[i]._head]._name; output << " to "; output << _towns[minSpanTree[i]._tail]._name << std::endl; diff --git a/test-data/project5.out b/test-data/project5.out index 6b241e8..92607ce 100644 --- a/test-data/project5.out +++ b/test-data/project5.out @@ -1,84 +1,42 @@ +The input data is: ------------------------------------------------- ----------------- New DataSet: ------------------ ------------------------------------------------- +Wenham + Hamilton 1 mi +Hamilton + Wenham 1 mi -The input data is : +The shortest paths from Wenham are: - Salem - Beverly 2.4 mi via bridge - Danvers 3.7 mi via bridge - Lynn 4.9 mi - Beverly - Danvers 2.9 mi - Salem 2.4 mi via bridge - Wenham 5.2 mi - Danvers - Beverly 2.9 mi - Wenham 4.2 mi - Salem 3.7 mi via bridge - Lynn - Salem 4.9 mi - Wenham - Beverly 5.2 mi - Danvers 4.2 mi - - -The shortest routes from Salem are: - - The shortest route from Salem to Wenham is 7.6 mi: - Salem - Beverly - Wenham - The shortest route from Salem to Beverly is 2.4 mi: - Salem - Beverly - The shortest route from Salem to Danvers is 3.7 mi: - Salem - Danvers - The shortest route from Salem to Lynn is 4.9 mi: - Salem - Lynn - ------------------------------------------------- ------------------------------------------------- + The shortest path from Wenham to Hamilton is 1 mi: + Wenham + Hamilton The road upgrading goal can be achieved at minimal cost by upgrading: + Hamilton to Wenham - Salem to Beverly - Danvers to Beverly - Wenham to Danvers - Salem to Lynn - ------------------------------------------------- ------------------------------------------------- - +------------------------------------------------------------------ +The input data is: ------------------------------------------------- ----------------- New DataSet: ------------------ ------------------------------------------------- +A + B 1 mi via bridge +B + A 1 mi via bridge + C 1 mi via bridge +C + B 1 mi via bridge -The input data is : +The shortest paths from A are: - Wenham - Hamilton 1 mi - Hamilton - Wenham 1 mi - - -The shortest routes from Wenham are: - - The shortest route from Wenham to Hamilton is 1 mi: - Wenham - Hamilton - ------------------------------------------------- ------------------------------------------------- + The shortest path from A to B is 1 mi: + A + B + The shortest path from A to C is 2 mi: + A + B + C The road upgrading goal can be achieved at minimal cost by upgrading: + B to A + C to B - Hamilton to Wenham - ------------------------------------------------- ------------------------------------------------- - +------------------------------------------------------------------ diff --git a/test-data/requirement1.out b/test-data/requirement1.out deleted file mode 100644 index d5d431a..0000000 --- a/test-data/requirement1.out +++ /dev/null @@ -1,39 +0,0 @@ - ------------------------------------------------- ----------------- New DataSet: ------------------ ------------------------------------------------- - -The input data is : - - Salem - Beverly 2.4 mi via bridge - Danvers 3.7 mi via bridge - Lynn 4.9 mi - Beverly - Danvers 2.9 mi - Salem 2.4 mi via bridge - Wenham 5.2 mi - Danvers - Beverly 2.9 mi - Wenham 4.2 mi - Salem 3.7 mi via bridge - Lynn - Salem 4.9 mi - Wenham - Beverly 5.2 mi - Danvers 4.2 mi - - - ------------------------------------------------- ----------------- New DataSet: ------------------ ------------------------------------------------- - -The input data is : - - Wenham - Hamilton 1 mi - Hamilton - Wenham 1 mi - - diff --git a/test-data/shortest.out b/test-data/shortest.out new file mode 100644 index 0000000..d2366e4 --- /dev/null +++ b/test-data/shortest.out @@ -0,0 +1,45 @@ +The input data is: + +Wenham + Hamilton 1 mi +Hamilton + Wenham 1 mi + +The shortest paths from Wenham are: + + The shortest path from Wenham to Hamilton is 1 mi: + Wenham + Hamilton + +The road upgrading goal can be achieved at minimal cost by upgrading: + Hamilton to Wenham + + +------------------------------------------------------------------ + +The input data is: + +A + B 1 mi via bridge +B + A 1 mi via bridge + C 1 mi via bridge +C + B 1 mi via bridge + +The shortest paths from A are: + + The shortest path from A to B is 1 mi: + A + B + The shortest path from A to C is 2 mi: + A + B + C + +The road upgrading goal can be achieved at minimal cost by upgrading: + B to A + C to B + + +------------------------------------------------------------------