Advertisement
Guest User

SET2.cpp

a guest
May 25th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. /******************************************************************************
  2.  
  3. СУБД имеет следующий набор операций:
  4.  
  5. SET ключ значение
  6. если элемента с таким ключом нет - он добавляется
  7. GET ключ
  8. если элемент с таким ключом есть - выдается его значение, иначе - сообщение об отсутствии элемента с таким ключом
  9. KEYS
  10. распечатываются все ключи, хранящиеся в нашей БД
  11. Работа с СУБД происходит в цикле, выход - по команде quit.
  12.  
  13. *******************************************************************************/
  14.  
  15. #include <iostream>
  16. #include <set> // заголовочный файл множеств
  17. #include <iterator>
  18. #include <cstring>
  19. using namespace std;
  20.  
  21. template<typename T>
  22. struct P
  23. {
  24. string key;
  25. T value;
  26. P(const string& s="",const T& v=0){key = s;value = v;}
  27.  
  28. };
  29.  
  30. /**
  31. * пергрузка сравнения для реализации множества
  32. */
  33.  
  34. template <typename T>
  35. bool operator< (const P<T>& a,const P<T>& b){return(a.key < b.key);}
  36.  
  37. /**
  38. * печать всех
  39. */
  40.  
  41. template <typename T>
  42. void Print(const set<P<T>> &DB){
  43. typename set<P<T>>::const_iterator i;
  44. for (i=DB.begin();i!= DB.end();i++){
  45. cout << (*i).key << ':' << (*i).value << endl;
  46. }
  47. cout << " all " << endl;
  48. }
  49.  
  50. /**
  51. * печать одного
  52. */
  53.  
  54. template <typename T>
  55. void Print_elem(const set<P<T>> &DB){
  56. char s[10];
  57. cin >> s;
  58. cout << "ищем элемент с ключом " << s << endl;
  59. typename set<P<T>>::const_iterator i;
  60. for (i=DB.begin();i!= DB.end();i++){
  61. if ((*i).key == s) {
  62. cout << (*i).value << endl;
  63. return;
  64. }
  65. }
  66. cout << " There is no such element " << endl;
  67. }
  68.  
  69. /**
  70. * добавление элемента
  71. */
  72.  
  73. template <typename T>
  74. void add_elem(set<P<T>>&DB)
  75. // читаем с клавиатуры строку и обьект типа т который занести
  76. { T e; // элемент который читаем
  77. char s[100];
  78. cin >> s >> e;
  79. //проверка что элемент присутствует
  80. typename set<P<T>>::const_iterator i;
  81. for (i=DB.begin();i!= DB.end();i++)
  82. while (s == " "){i++; if (s == "\n") cout << "bad command" << endl; }///////////////////////////////
  83. if ((*i).key == s ){
  84. cout << " Already in " << endl;
  85. return;
  86. }
  87.  
  88. DB.insert(P<T>(s,e));
  89. cout << " New item added !" << endl;
  90. }
  91.  
  92. int main (){
  93. set <P<string> > DBS;
  94. set<P<int > > DB;
  95.  
  96. string buf;
  97. while(1){
  98. cin >> buf;
  99. if (buf == "quit") return 0;
  100. if (buf == "KEYS") Print(DBS);
  101. else
  102. if (buf == "SET") add_elem(DBS);
  103. else
  104. if (buf == "GET") Print_elem(DBS);
  105. else
  106. cout << " Inknown command " << endl;
  107. }
  108.  
  109.  
  110. return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement