diff --git a/bst b/bst index a8ad46d53ed66e53a2fd94d0a3cfd7cc92c5cdf7..68ea27233d3820468615849dd3d166e1931afd00 100755 Binary files a/bst and b/bst differ diff --git a/include/bst_lib.h b/include/bst_lib.h index 97e8296e8f700607f2fbdaf1ae8ec4b8d46f0f61..a67846c20c38e09a5a45e51a764e1250cfdc51cd 100644 --- a/include/bst_lib.h +++ b/include/bst_lib.h @@ -8,20 +8,20 @@ using namespace std; class Node{ private: int key; - string truck; + char truck; Node *leftNode; Node *rightNode; Node *fatherNode; public: void setKey(int newKey); - void setTruck(string newTruck); + void setTruck(char newTruck); void setLeftNode(Node *newLeftNode); void setRightNode(Node *newRightNode); void setFatherNode(Node *newRatherNode); int getKey(); - string getTruck(); + char getTruck(); Node* getLeftNode(); Node* getRightNode(); Node* getFatherNode(); @@ -32,9 +32,9 @@ class Node{ class Tree{ public: Node *root; - Node* createNode(int key, string truck, Node *father); - Node* insertNode(int key, string truck, Node *father, Node *current); + Node* createNode(int key, char truck, Node *father); + Node* insertNode(int key, char truck, Node *father, Node *current); Node* binarySearch(int key, Node *current); }; -extern Node nullNode; \ No newline at end of file +extern Node nullNode; diff --git a/lib/bst_lib.a b/lib/bst_lib.a index e2489fc26c4197cf7546363322a51d80bb9522f6..e373f2fbd1f5329b67ffb406c7f543d0521350d4 100644 Binary files a/lib/bst_lib.a and b/lib/bst_lib.a differ diff --git a/obj/bst_lib.o b/obj/bst_lib.o index 8658372b45f8d5822c22d6bcd75affe05508302e..2e83c75ca30c2e9246e20960569c7f2767b59497 100644 Binary files a/obj/bst_lib.o and b/obj/bst_lib.o differ diff --git a/src/bst_lib.cpp b/src/bst_lib.cpp index 5ec8ae491f64a2585ee2f3f9fdf1570781fcda2e..9dbd3d97506a869a09b2a521745c8c50f1fd32da 100644 --- a/src/bst_lib.cpp +++ b/src/bst_lib.cpp @@ -11,7 +11,7 @@ void Node::setKey(int newKey){ key=newKey; } -void Node::setTruck(string newTruck){ +void Node::setTruck(char newTruck){ truck=newTruck; } @@ -31,7 +31,7 @@ int Node::getKey(){ return(key); } -string Node::getTruck(){ +char Node::getTruck(){ return(truck); } @@ -63,7 +63,7 @@ bool Node::printInOrder(){ return 1; } -Node* Tree::createNode(int key, string truck, Node *father){ +Node* Tree::createNode(int key, char truck, Node *father){ Node *aux=new Node; aux->setKey(key); aux->setTruck(truck); @@ -73,7 +73,7 @@ Node* Tree::createNode(int key, string truck, Node *father){ return aux; } -Node* Tree::insertNode(int key, string truck, Node *father, Node *current){ +Node* Tree::insertNode(int key, char truck, Node *father, Node *current){ if(current==&nullNode){ current=createNode(key, truck, father); }else if(current->getKey() > key){ diff --git a/src/main.cpp b/src/main.cpp index c903a2d8ed21a6ac5b84de5d8bec627fe6020e06..59548e6cc02c2b14413c4195c4feb8dc48ef99cb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,6 +2,7 @@ // 2015 #include <iostream> +#include <stdio.h> #include "bst_lib.h" using namespace std; @@ -10,31 +11,22 @@ Node nullNode; int main(int argc, char *argv[]) { Tree binaryTree; - string answer, truck="ready"; + char truck, comma1, comma2; + string answer; int requestedTime, currentTime; binaryTree.root=&nullNode; - while (1) { - cin >> currentTime; - std::cin.clear(); - cin >> truck; - if(truck=="exit") break; - if(truck == "print"){ - binaryTree.root->printInOrder(); + while (scanf("%d %c %c %c %d\n", ¤tTime, &comma1, &truck, &comma2, &requestedTime)!=EOF) { + if (requestedTime < currentTime) { + answer="NOK"; + }else if((binaryTree.binarySearch(requestedTime, binaryTree.root) == &nullNode)&&(binaryTree.binarySearch(requestedTime-1, binaryTree.root) == &nullNode)&&(binaryTree.binarySearch(requestedTime-2, binaryTree.root) == &nullNode)){ + binaryTree.root=binaryTree.insertNode(requestedTime, truck, &nullNode, binaryTree.root); + answer="OK"; }else{ - cin >> requestedTime; - if (requestedTime < currentTime) { - answer="NOK"; - }else if((binaryTree.binarySearch(requestedTime, binaryTree.root) == &nullNode)&&(binaryTree.binarySearch(requestedTime-1, binaryTree.root) == &nullNode)&&(binaryTree.binarySearch(requestedTime-2, binaryTree.root) == &nullNode)){ - binaryTree.root=binaryTree.insertNode(requestedTime, truck, &nullNode, binaryTree.root); - answer="OK"; - }else{ - answer="NOK"; - } + answer="NOK"; } - if(truck != "print") std::cout << truck << "," << answer << std::endl; + cout << truck << "," << answer << endl; } - return 0; } diff --git a/teste.txt b/teste.txt index 639460cefe598abcbd3b6bf01056293fba30cf88..2441a718deb84c03ffc61c947bf72ec466764dbe 100644 --- a/teste.txt +++ b/teste.txt @@ -1,9 +1,7 @@ -1 A 49 -2 B 79 -3 C 46 -4 D 71 -5 X 9 -15 E 72 -36 F 23 -print -exit +1,A,49 +2,B,79 +3,C,46 +4,D,71 +5,X,9 +15,E,72 +36,F,23