All pastes #976477 Raw Edit

Doug pex5 problem

public cpp v1 · immutable
·published 2008-04-08 05:24 UTC
rendered paste body
<<<TREE.CPP>>>#include <iostream>using namespace std;class Node { public:  static const int MAX_CHILDREN = 5;  Node() {inUse = 0;}  Node(string str) {inUse = 0; name = str;}  ~Node();  void visit() { cout << name << endl;}  string name;  int inUse;  Node* child[MAX_CHILDREN];};Node::~Node(){  for (int i = 0; i < inUse; ++i)    delete child[i];}class Tree { public:  static const int preOrder = 1;  static const int postOrder = 2;  Tree() {root = 0;}  ~Tree() {if (root != 0) delete root;}  Tree(string str) {root = new Node(str);}  void traversal(int order) {traversal(root, order);}  void addNode(Node* root, string name);  //void addNode(string name) {addNode(root, name);}  Node* findNode(string name) {findNode(root, name);}  private:  Node* findNode(Node* root, string name);  void traversal(Node* ptr, int order);  //void addNode(Node *, string name);  Node* root;};void Tree::addNode(Node* root, string name){  if (root->inUse <= root->MAX_CHILDREN) {    root->inUse++;    root->child[root->inUse] = new Node(name);  } else {  }}void Tree::traversal(Node *root, int order){  if (root == 0) if (order == preOrder)    //cout << root->name << endl;    root->visit();  for(int i = 0; i < root->inUse; i++)    traversal(root->child[i], order);  if (order == postOrder)    //cout << root->name << endl;    root->visit();}Node* Tree::findNode(Node* root, string name){  Node* ptr = new Node;  if (root->name == name) {    ptr = root;    return ptr;  }  for (int i = 0; i < root->inUse; i++)    findNode(root->child[i], name);}<<<MAIN.CPP>>>#include "tree.cpp"using namespace std;const char addChar = 'A';const char preChar = 'E';const char postChar = 'O';const char childChar = 'C';const char descChar = 'D';const char quitChar = 'Q';char getCmd() {  if (cin) {    char cmd;    cout << "Select function: ";    if (cin >> cmd) {      cin.sync();      return toupper(cmd);    }    else {      cout << "Invalid option.\n";    }  }  return quitChar;}int main(){  char cmd = getCmd();  string child;  string parent;  cout << "Enter the first name: ";  getline (cin, child);  cin.sync(); Tree aTree(child);  Node* ptr = new Node;  while (cin && cmd != quitChar) {    switch (cmd) {    case addChar:      cout << "Enter name: ";      getline (cin, child);      cin.sync();      cout << "Enter parent's name: ";      getline (cin, parent);      cin.sync();      ptr = aTree.findNode(parent);      aTree.addNode(ptr, child);    case preChar:    case postChar:    case childChar:    case descChar:    default:      cout << "No such command. Please try again.\n";      break;    }    cmd = getCmd();  }}