Untitled
unknown
plain_text
4 years ago
11 kB
7
Indexable
#include <iostream>
#include <ostream>
#include <string>
#include <fstream>
#include <sstream>
#include <exception>
#include "BinaryTree.h"
using namespace std;
int main(int argc, char **argv) {
// Checking for command line args
if (argc <= 1) {
cout << "Too few command line arguments..." << endl;
cout << "Format: ./Main file.txt" << endl;
exit(1);
} else if (argc > 2) {
cout << "More than one command line argument..." << endl;
cout << "Format: ./Main file.txt" << endl;
exit(1);
}
BinaryTree<int> intTree;
BinaryTree<float> floatTree;
BinaryTree<std::string> stringTree;
string file = argv[1];
ifstream inputFile(file);
string userInput;
cout << "Enter tree type (i - int, f - float, s - std::string): ";
cin >> userInput;
bool input = true;
while (input) {
if (userInput.compare("i") == 0) {
int item;
while (inputFile >> item) {
intTree.insert(item);
}
inputFile.close();
input = false;
} else if (userInput.compare("f") == 0) {
float item;
while (inputFile >> item) {
floatTree.insert(item);
}
inputFile.close();
input = false;
} else if (userInput.compare("s") == 0) {
string item;
while (inputFile >> item) {
stringTree.insert(item);
}
inputFile.close();
input = false;
} else {
cout << "Invalid list type" << endl;
cout << "Enter list type (i - int, f - float, s - std::string): ";
cin >> userInput;
}
} // While
// Main game loop
bool status = true;
string input2;
cout << "insert (i), delete (d), retrieve (r), length (l), in-order (n), pre-order (p),"
<< endl
<< "post-order (o), getNumSingleParent (s), getNumLeafNodes (f),"
<< endl
<< "getSumOfSubtrees (t), quit (q)"
<< endl;
while (status) {
cout << "Enter a command: ";
cin >> input2;
if (input2.compare("i") == 0) { // insert
if (userInput.compare("i") == 0) {
// int tree
int userItem;
cout << "Enter an item to insert: ";
cin >> userItem;
while (cin.fail()) {
cout << "Please enter an integer item: ";
cin.clear();
cin.ignore();
cin >> userItem;
}
intTree.insert(userItem);
intTree.inOrder();
cout << endl;
} else if (userInput.compare("f") == 0) {
// float tree
float userItem;
cout << "Enter an item to insert: ";
cin >> userItem;
while (cin.fail()) {
cout << "Please enter an integer item: ";
cin.clear();
cin.ignore();
cin >> userItem;
}
floatTree.insert(userItem);
floatTree.inOrder();
cout << endl;
} else if (userInput.compare("s") == 0) {
// string tree
string userItem;
cout << "Enter an item to insert: ";
cin >> userItem;
while (cin.fail()) {
cout << "Please enter an integer item: ";
cin.clear();
cin.ignore();
cin >> userItem;
}
stringTree.insert(userItem);
stringTree.inOrder();
cout << endl;
}
} else if (input2.compare("d") == 0) { // delete
if (userInput.compare("i") == 0) {
// int tree
int userItem;
cout << "Item to delete: ";
cin >> userItem;
while (cin.fail()) {
cout << "Please enter an int item: ";
cin.clear();
cin.ignore();
cin >> userItem;
}
intTree.deleteItem(userItem);
intTree.inOrder();
cout << endl;
} else if (userInput.compare("f") == 0) {
// float tree
float userItem;
cout << "Item to delete: ";
cin >> userItem;
while (cin.fail()) {
cout << "Please enter an int item: ";
cin.clear();
cin.ignore();
cin >> userItem;
}
floatTree.deleteItem(userItem);
floatTree.inOrder();
cout << endl;
} else if (userInput.compare("s") == 0) {
// string tree
string userItem;
cout << "Item to delete: ";
cin >> userItem;
while (cin.fail()) {
cout << "Please enter an int item: ";
cin.clear();
cin.ignore();
cin >> userItem;
}
stringTree.deleteItem(userItem);
stringTree.inOrder();
cout << endl;
}
} else if (input2.compare("r") == 0) { // retrieve
if (userInput.compare("i") == 0) {
// int tree
int itemRetrieved;
cout << "Item to be retrieved: ";
cin >> itemRetrieved;
while (cin.fail()) {
cout << "Please enter an int item: ";
cin.clear();
cin.ignore();
cin >> itemRetrieved;
}
intTree.getRetrieve(itemRetrieved);
} else if (userInput.compare("f") == 0) {
// float tree
float itemRetrieved;
cout << "Item to be retrieved: ";
cin >> itemRetrieved;
while (cin.fail()) {
cout << "Please enter an int item: ";
cin.clear();
cin.ignore();
cin >> itemRetrieved;
}
floatTree.getRetrieve(itemRetrieved);
} else if (userInput.compare("s") == 0) {
// string tree
string itemRetrieved;
cout << "Item to be retrieved: ";
cin >> itemRetrieved;
while (cin.fail()) {
cout << "Please enter an int item: ";
cin.clear();
cin.ignore();
cin >> itemRetrieved;
}
stringTree.getRetrieve(itemRetrieved);
}
} else if (input2.compare("l") == 0) { // length
if (userInput.compare("i") == 0) {
// int tree
cout << "Length: " << intTree.getLength() << endl;
} else if (userInput.compare("f") == 0) {
// float tree
cout << "Length: " << floatTree.getLength() << endl;
} else if (userInput.compare("s") == 0) {
// string tree
cout << "Length: " << stringTree.getLength() << endl;
}
} else if (input2.compare("n") == 0) { // in-order
if (userInput.compare("i") == 0) {
// int tree
intTree.inOrder();
} else if (userInput.compare("f") == 0) {
// float tree
floatTree.inOrder();
} else if (userInput.compare("s") == 0) {
// string tree
stringTree.inOrder();
}
} else if (input2.compare("p") == 0) { // pre-order
if (userInput.compare("i") == 0) {
// int tree
intTree.preOrder();
} else if (userInput.compare("f") == 0) {
// float tree
floatTree.preOrder();
} else if (userInput.compare("s") == 0) {
// string tree
stringTree.preOrder();
}
} else if (input2.compare("o") == 0) { // post-order
if (userInput.compare("i") == 0) {
// int tree
intTree.postOrder();
} else if (userInput.compare("f") == 0) {
// float tree
floatTree.postOrder();
} else if (userInput.compare("s") == 0) {
// string tree
stringTree.postOrder();
}
} else if (input2.compare("s") == 0) { // getNumSingleParent
if (userInput.compare("i") == 0) {
// int tree
cout << "Number of Single Parents: " << intTree.getNumSingleParent() << endl;
} else if (userInput.compare("f") == 0) {
// float tree
cout << "Number of Single Parents: " << floatTree.getNumSingleParent() << endl;
} else if (userInput.compare("s") == 0) {
// string tree
cout << "Number of Single Parents: " << stringTree.getNumSingleParent() << endl;
}
} else if (input2.compare("f") == 0) { // getNumLeafNodes
if (userInput.compare("i") == 0) {
// int tree
cout << "Number of Leaf Nodes: " << intTree.getNumLeafNodes() << endl;
} else if (userInput.compare("f") == 0) {
// float tree
cout << "Number of Leaf Nodes: " << floatTree.getNumLeafNodes() << endl;
} else if (userInput.compare("s") == 0) {
// string tree
cout << "Number of Leaf Nodes: " << stringTree.getNumLeafNodes() << endl;
}
} else if (input2.compare("t") == 0) { // getSumOfSubtrees
if (userInput.compare("i") == 0) {
/*
// int tree
int item;
cout << "Item to be retrieved: ";
cin >> item;
while (cin.fail()) {
cout << "Please enter an int item: ";
cin.clear();
cin.ignore();
cin >> item;
}
cout << "Number of Sub trees: " << intTree.getSumOfSubTrees(item) << endl;
*/
} else if (userInput.compare("f") == 0) {
// float tree
} else if (userInput.compare("s") == 0) {
// string tree
}
} else if (input2.compare("q") == 0) { // quit
cout << "Exiting..." << endl;
exit(1);
} else {
cout << "Invalid input. Please try again." << endl;
status = true;
}
}
}Editor is loading...