mirror of
https://github.com/tiennm99/HCMUT.git
synced 2026-10-16 10:15:10 +00:00
Update Assignment
This commit is contained in:
1 parent
edd9b9a1f6
commit
a4393f4d3b
9 files changed
+983
No files matched your search
@@ -0,0 +1,103 @@
|
||||
/* Copyright (C) 2018
|
||||
* Course: CO2003
|
||||
* Author: Rang Nguyen
|
||||
* Ho Chi Minh City University of Technology
|
||||
*/
|
||||
|
||||
#include"TreeSet.h"
|
||||
#include<fstream>
|
||||
|
||||
void print(ostream& os, AVLNode* root) {
|
||||
if (root != NULL) {
|
||||
print(os, root->left);
|
||||
os << root->key << " ";
|
||||
print(os, root->right);
|
||||
}
|
||||
}
|
||||
|
||||
// print all elements in the set in ascending order
|
||||
ostream& operator<<(ostream& os, const TreeSet& tree) {
|
||||
if (tree.root == NULL) os << "NULL\n";
|
||||
else print(os, tree.root);
|
||||
return os;
|
||||
}
|
||||
|
||||
int main() {
|
||||
TreeSet set, temp, *subSet;
|
||||
ifstream ifs;
|
||||
ifs.open("input.txt");
|
||||
char command;
|
||||
int val;
|
||||
try
|
||||
{
|
||||
while (ifs >> command) {
|
||||
switch (command) {
|
||||
case 'a': // add an element to the set
|
||||
ifs >> val;
|
||||
set.add(val);
|
||||
break;
|
||||
case 'c': // check if an element is in the set or not
|
||||
ifs >> val;
|
||||
printf("The set contains %d: %d\n", val, set.contains(val));
|
||||
break;
|
||||
case 'd': // copy the set to a new one
|
||||
temp.copy(set);
|
||||
cout << temp << endl;
|
||||
temp.clear();
|
||||
cout << temp.size() << endl;
|
||||
break;
|
||||
case 'f': // return the smallest element in the set
|
||||
printf("The smallest element in the set is: %d\n", set.first());
|
||||
break;
|
||||
case 'h': // returns smallest element greater than val.
|
||||
ifs >> val;
|
||||
printf("The smallest element greater than %d is %d\n", val, set.higher(val));
|
||||
break;
|
||||
case 'l': // return the largest element in the set
|
||||
printf("The largest element in the set is: %d\n", set.last());
|
||||
break;
|
||||
case 'o': // returns largest element smaller than val.
|
||||
ifs >> val;
|
||||
printf("The largest element smaller than %d is %d\n", val, set.lower(val));
|
||||
break;
|
||||
case 'p': // print the content of the set in ascending order
|
||||
cout << set << endl;
|
||||
break;
|
||||
case 'r': // remove an element from the set
|
||||
ifs >> val;
|
||||
set.remove(val);
|
||||
break;
|
||||
case 's': // return the sub set
|
||||
int fromVal, toVal;
|
||||
ifs >> fromVal >> toVal;
|
||||
subSet = set.subSet(fromVal, toVal);
|
||||
cout <<"Subset is: "<< *subSet << endl;
|
||||
if (!subSet) delete subSet;
|
||||
break;
|
||||
case 'z': //returns the size of the set
|
||||
printf("The number of elements in the set is: %d\n", set.size());
|
||||
break;
|
||||
default:
|
||||
throw "Wrong input format!";
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (char const* s) {
|
||||
printf("An exception occurred. Exception type: %s\n", s);
|
||||
}
|
||||
|
||||
ifs.close();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user