Advertisement
Guest User

alg

a guest
Dec 12th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. CMakeLists.txt
  2. ******это у всех одинаковое видимо будет***********
  3. cmake_minimum_required(VERSION 3.0)
  4.  
  5. project(The Sum Of Its Parts CXX)
  6. if (NOT CMAKE_BUILD_TYPE)
  7. set(CMAKE_BUILD_TYPE Debug)
  8. endif(NOT CMAKE_BUILD_TYPE)
  9.  
  10. add_subdirectory(src)
  11. /////////////////////////////////////
  12. src/CMakeLists.txt
  13. ********это тоже*************
  14. add_executable(main
  15. main.cpp
  16. parts.cpp
  17. parts.h
  18. )
  19. ////////////////////////////////////
  20. main
  21. ******заменить мейн на*************
  22. load_definitions("../definitions.txt");
  23. process_queries("../queries.txt");
  24. /////////////////////////////////////
  25. parts.h
  26. ***добавить в класс Part*******
  27. map<int,Part*> subparts;
  28. ////////////////////////////////////
  29. parts.cpp
  30. **********добавить****************
  31. //Namecontainer
  32. NameContainer partContainer;
  33.  
  34. NameContainer::~NameContainer(void) {
  35. name_map.clear();
  36. }
  37.  
  38. void add_part(string const &x, int q, string const &y) {
  39. partContainer.lookup(x)->subparts.insert({q, partContainer.lookup(y)});
  40. }
  41.  
  42. Part *NameContainer::lookup(string const &name) {
  43. if (!partContainer.name_map[name])
  44. partContainer.name_map[name] = new Part(name);
  45. return partContainer.name_map[name];
  46. }
  47.  
  48. //Part
  49. int Part::count_howmany(Part const *p) {
  50. if (this == p)
  51. return 1;
  52. else {
  53. int howmany = 0;
  54. for (pair<int, Part *> sp : subparts) {
  55. int deeperhowmmany = sp.second->count_howmany(p);
  56. howmany += sp.first * deeperhowmmany;
  57. }
  58. return howmany;
  59. }
  60. }
  61.  
  62. void Part::describe(void) {
  63.  
  64. if (subparts.size() != 0) {
  65. cout << "Part " << name << " subparts are:\n";
  66. for (pair<int, Part *> sp : subparts)
  67. cout << sp.first << " " << sp.second->name << "\n";
  68. } else
  69. cout << "Part " << name << " has no subparts\n";
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement