Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CMakeLists.txt
- ******это у всех одинаковое видимо будет***********
- cmake_minimum_required(VERSION 3.0)
- project(The Sum Of Its Parts CXX)
- if (NOT CMAKE_BUILD_TYPE)
- set(CMAKE_BUILD_TYPE Debug)
- endif(NOT CMAKE_BUILD_TYPE)
- add_subdirectory(src)
- /////////////////////////////////////
- src/CMakeLists.txt
- ********это тоже*************
- add_executable(main
- main.cpp
- parts.cpp
- parts.h
- )
- ////////////////////////////////////
- main
- ******заменить мейн на*************
- load_definitions("../definitions.txt");
- process_queries("../queries.txt");
- /////////////////////////////////////
- parts.h
- ***добавить в класс Part*******
- map<int,Part*> subparts;
- ////////////////////////////////////
- parts.cpp
- **********добавить****************
- //Namecontainer
- NameContainer partContainer;
- NameContainer::~NameContainer(void) {
- name_map.clear();
- }
- void add_part(string const &x, int q, string const &y) {
- partContainer.lookup(x)->subparts.insert({q, partContainer.lookup(y)});
- }
- Part *NameContainer::lookup(string const &name) {
- if (!partContainer.name_map[name])
- partContainer.name_map[name] = new Part(name);
- return partContainer.name_map[name];
- }
- //Part
- int Part::count_howmany(Part const *p) {
- if (this == p)
- return 1;
- else {
- int howmany = 0;
- for (pair<int, Part *> sp : subparts) {
- int deeperhowmmany = sp.second->count_howmany(p);
- howmany += sp.first * deeperhowmmany;
- }
- return howmany;
- }
- }
- void Part::describe(void) {
- if (subparts.size() != 0) {
- cout << "Part " << name << " subparts are:\n";
- for (pair<int, Part *> sp : subparts)
- cout << sp.first << " " << sp.second->name << "\n";
- } else
- cout << "Part " << name << " has no subparts\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement