#include #include #include #include using namespace std; #include "Animal.h" #include "QuestionNode.h" #define DEFAULT_DATA_1 "animalData1" #define DEFAULT_DATA_2 "animalData2" #define DEFAULT_MERGE "animalMerge" // Take two separate databases (outputs from the game "main") and merge them // into one. The idea is that several groups can play separately (initially // individual people) and then by merging again and again make bigger // and bigger databases that will be interesting/amusing to a larger // constituency. QuestionNode *merge(QuestionNode *qN1, QuestionNode *qN2) { // Complete the code for Task 1. } int main(int argc, char *argv[]) { string dataFileName[2]= { DEFAULT_DATA_1, DEFAULT_DATA_2 }, mergeFileName= DEFAULT_MERGE; if (argc >= 2 && string(argv[1]) == "-help") { cout << "merge [" << dataFileName[0] << " " << dataFileName[1] << " [" << mergeFileName << "]]" << endl; exit(1); } if (argc == 2 || argc > 4) { cout << "Try merge -help." << endl; exit(0); } if (argc >= 3) for (unsigned i= 0; i<2; i++) dataFileName[i]= argv[i+1]; if (argc >= 4) mergeFileName= argv[3]; QuestionNode *qNS[2][3]; ifstream dataFile[2]; for (unsigned i= 0; i<2; i++) { dataFile[i].open(dataFileName[i].c_str()); if (dataFile[i]) { cout << "Loading tree " << i << " from textfile '"+dataFileName[i]+ "'" << flush; for (unsigned j= 0; j<3; j++) qNS[i][j]= QuestionNode::Load(dataFile[i]); dots(3); // 1438: For dramatic effect. cout << " done." << endl; } else { cout << "Could not load from '"+dataFileName[i]+"'." << endl; } } QuestionNode *qNM[3]; for (unsigned i= 0; i<3; i++) qNM[i]= merge(qNS[0][i], qNS[1][i]); ofstream mergeFile(mergeFileName.c_str()); if (mergeFile) { cout << "Saving tree to textfile '"+mergeFileName+"'" << flush; for (unsigned i= 0; i<3; i++) QuestionNode::Save(mergeFile, qNM[i], 0); for (unsigned i= 0; i<3; i++) { system("sleep 1"); cout << "." << flush; } // 1438. cout << " done." << endl; } else { cout << "Could not save to '"+mergeFileName+"'." << endl; } }