daily pastebin goal
5%
SHARE
TWEET

Untitled

a guest Jun 13th, 2018 52 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <map>
  3. #include <vector>
  4. #include <deque>
  5. #include <algorithm>
  6. #include <bitset>
  7. #include <math.h>
  8. #include <string>
  9. #include <set>
  10. #include <fstream>
  11. #include <valarray>
  12. #include <iomanip>
  13. #include <bitset>
  14. #include <random>
  15. #include <complex>
  16. #include <random>
  17. #include <unordered_map>
  18. #include <unordered_set>
  19. using namespace std;
  20. class apple {
  21.     // пищевая ценность продукта
  22. protected: int value;
  23. private:
  24.    
  25.     string color , type , country ;
  26.     vector<string> clrs = {"red" , "blue" , "green" , "yellow" , "white" , "golden"};
  27.     vector<string> ctrs = {"Russia" , "Ecuador" , "Columbia" , "Argentina" , "Brazil" , "Netherlands"};
  28.     vector<string> tps = {"beutifull apple" , "apple" , "big apple" , "small apple" , "tasty apple" , "pineapple"};
  29.     int weight , Fe , kcal , vitB , vitA , vitC , Mg ;
  30.     // поменять содержание витаминов А и В
  31.     void swap_A_B() { swap(vitA , vitB); }
  32.     // поменять содержание железа и магния
  33.     void swap_Fe_Mg(){ swap(Fe , Mg); }
  34.     // перемешать порядок стран
  35.     void shuffle_ctrs() {
  36.         random_shuffle(ctrs.begin(), ctrs.end());
  37.     }
  38.     // перемешать порядок цветов
  39.     void shuffle_clrs() {
  40.         random_shuffle(clrs.begin(), clrs.end());
  41.     }
  42.     // перемешать порядок типов
  43.     void shuffle_tps() {
  44.         random_shuffle(tps.begin(), tps.begin());
  45.     }
  46.     // добавить еще одну страну происхождения
  47.     void add_to_ctrs(string cnt) {
  48.         ctrs.push_back(cnt);
  49.     }
  50.     // добавить еще один возможный цвет
  51.     void add_to_clrs(string cnt) {
  52.         clrs.push_back(cnt);
  53.     }
  54.     // добавить еще возможный тип
  55.     void add_to_tps(string cnt) {
  56.         tps.push_back(cnt);
  57.     }
  58. public:
  59.     void hello() { cout << "Объект класса яблоко\n"; }
  60.     // конструктор по умлочанию
  61.     apple() {
  62.         cout << "сработал конструктор по умолчанию, данных нет\n";
  63.     }
  64.     // конструктор для всех начальных данных
  65.     apple(string color , string type , string country , int weight ,int kcal , int Fe , int Mg , int vitA , int vitB , int vitC ) {
  66.         cout << "сработал конструктор, установленны данные\n";
  67.         set_apple(color, type , country , weight , kcal , Fe , Mg , vitA , vitB , vitC);
  68.     }
  69.     // конструктор для начальных данных цвет и тип, если вы только видете это яблоко
  70.     apple(string color , string type ) {
  71.         cout << "сработал конструктор с двумя изначальными параметрами, установленны данные\n";
  72.         set_color(color);
  73.         set_type(type);
  74.     }
  75.     // конструктор для начальных данных цвет
  76.     apple(string color) {
  77.         cout << "сработал конструктор, если известен только цвет\n";
  78.         set_color(color);
  79.     }
  80.     // устанавливаем private параметрам новые данные
  81.     friend const apple operator*(const apple& left, const apple& right);
  82.     friend const apple operator+(const apple& left, const apple& right);
  83.     friend ostream& operator<<(ostream& os, const apple& app);
  84.     //  все страны которые есть в базе
  85.     void get_ctrs() {
  86.         cout << "текущий список возможных стран: \n";
  87.         for(int i = 0; i < ctrs.size(); i++) {
  88.             cout << ctrs[i] << " ";
  89.         }
  90.         cout << "\n";
  91.     }
  92.     //  все цвета которые есть в базе
  93.     void get_clrs() {
  94.         cout << "текущий список возможных цветов: \n";
  95.         for(int i = 0; i < clrs.size(); i++) {
  96.             cout << clrs[i] << " ";
  97.         }
  98.         cout << "\n";
  99.     }
  100.     //  все типы которые есть в базе
  101.     void get_tps() {
  102.         cout << "текущий список возможных типов: \n";
  103.         for(int i = 0; i < tps.size(); i++) {
  104.             cout << tps[i] << " ";
  105.         }
  106.         cout << "\n";
  107.     }
  108.     // дополнение словаря стран + использование приватного метода
  109.     void to_ctrs(vector<string> &to_add) {
  110.         for(int i = 0; i < to_add.size(); i++) {
  111.             add_to_ctrs(to_add[i]);
  112.         }
  113.     }
  114.     // дополнение словаря цветов + использование приватного метода
  115.     void to_clrs(vector<string> &to_add) {
  116.         for(int i = 0; i < to_add.size(); i++) {
  117.             add_to_clrs(to_add[i]);
  118.         }
  119.     }
  120.     // дополнение словаря типов + использование приватного метода
  121.     void to_tps(vector<string> &to_add) {
  122.         for(int i = 0; i < to_add.size(); i++) {
  123.             add_to_tps(to_add[i]);
  124.         }
  125.     }
  126.     // очистить словарь стран
  127.     void clear_countries() { ctrs.clear(); }
  128.     // очистить словарь цветов
  129.     void clear_colors() { clrs.clear(); }
  130.     // очистить словарь типов
  131.     void clear_types() { tps.clear(); }
  132.     // передать и заменить новый словарь стран
  133.     void new_countries(vector<string> &to_add) {
  134.         clear_countries();
  135.         to_ctrs(to_add);
  136.     }
  137.     // передать и заменить новый словарь стран
  138.     void new_colors(vector<string> &to_add) {
  139.         clear_colors();
  140.         to_clrs(to_add);
  141.     }
  142.     // передать и заменить новый словарь типов
  143.     void new_types(vector<string> &to_add) {
  144.         clear_types();
  145.         to_tps(to_add);
  146.     }
  147.     // установка яблока со всеми параметрами
  148.     void set_apple(string new_color , string new_type , string new_country , int new_weight ,int new_kcal , int new_Fe , int new_Mg , int new_vitA , int new_vitB , int new_vitC ) {
  149.         cout << "все свойства установлены \n";
  150.         color = new_color;
  151.         type = new_type;
  152.         country = new_country;
  153.         weight = new_weight;
  154.         kcal = new_kcal;
  155.         Fe = new_Fe;
  156.         Mg = new_Mg;
  157.         vitA = new_vitA;
  158.         vitB = new_vitB;
  159.         vitC = new_vitC;
  160.     }
  161.     // делаем случайное яблоко
  162.     void set_rand_apple() {
  163.         cout << "случайная инициализация: ";
  164.         int num_con = rand() % ctrs.size();
  165.         int num_col = rand() % clrs.size();
  166.         int num_type = rand() % tps.size();
  167.         string clr = clrs[num_col];
  168.         string cnt = ctrs[num_con];
  169.         string tpe = tps[num_type];
  170.         int F = rand() % 100 + 1;
  171.         int M = rand() % 100 + 1;
  172.         int wei = rand() % 100 + 1;
  173.         int cal = rand() % 100 + 1;
  174.         int vA = rand() % 100;
  175.         int vB = rand() % 100;
  176.         int vC = rand() % 100;
  177.         set_apple(clr , tpe , cnt , wei , cal , F , M , vA , vB , vC);
  178.     }
  179.     // получаем данные о нашем объекте
  180.     void get_all_info() {
  181.         cout << "--------------------------------\n";
  182.         cout << "актуальная информация: \n";
  183.         cout << "color: " << color << "\n";
  184.         cout << "type: " << type << "\n";
  185.         cout << "country: " << country << "\n";
  186.         cout << "weight: " << weight << "\n";
  187.         cout << "kcal: " << kcal << "\n";
  188.         cout << "Fe: " << Fe << "\n";
  189.         cout << "Mg: " << Mg << "\n";
  190.         cout << "vitA: " << vitA << "\n";
  191.         cout << "vitB: " << vitB << "\n";
  192.         cout << "vitC: " << vitC << "\n";
  193.         cout << "--------------------------------\n";
  194.         // to add other parameters;
  195.     }
  196.     // устанливаем цвет объекта
  197.     void set_color(string cl) {
  198.         cout << "тип объекта установлен\n";
  199.         color = cl;
  200.     }
  201.     // устанливаем тип объекта
  202.     void set_type(string tp) {
  203.         cout << "тип объекта установлен\n";
  204.         type = tp;
  205.     }
  206.     // устанливаем страну объекта
  207.     void set_country(string count) {
  208.         cout << "страна происхождения объекта установлена\n";
  209.         country = count;
  210.     }
  211.     // устанливаем массу объекта
  212.     void set_weight(int wei) {
  213.         cout << "вес объекта установлен\n";
  214.         weight = wei;
  215.     }
  216.     // устанливаем калории объекта
  217.     void set_kcal(int cal) {
  218.         cout << "число калорий объекта установлен\n";
  219.         kcal = cal;
  220.     }
  221.     // устанливаем содержание железа в объекте
  222.     void set_Fe(int F) {
  223.         cout << "содержание железа в объекте установлено\n";
  224.         Fe = F;
  225.     }
  226.     // устанливаем содержание магния в объекте
  227.     void set_Mg(int M) {
  228.         cout << "содержание магния в объекте установлено\n";
  229.         Mg = M;
  230.     }
  231.     // устанливаем содержание витамина А в объекте
  232.     void set_vitA(int A) {
  233.         cout << "содержание витамина А в объекте установлено\n";
  234.         vitA = A;
  235.     }
  236.     // устанливаем содержание витамина B в объекте
  237.     void set_vitB(int B) {
  238.         cout << "содержание витамина B в объекте установлено\n";
  239.         vitB = B;
  240.     }
  241.     // устанливаем содержание витамина C в объекте
  242.     void set_vitC(int C) {
  243.         cout << "содержание витамина C в объекте установлено\n";
  244.         vitC = C;
  245.     }
  246.     // получаем только тип
  247.     void get_type() {
  248.         cout << "тип объекта\n";
  249.         cout << "type: " << type << "\n";
  250.     }
  251.     // получаем только цвет
  252.     void get_color() {
  253.         cout << "цвет объекта\n";
  254.         cout << "color: " << color << "\n";
  255.     }
  256.     // получаем только страну
  257.     void get_country() {
  258.         cout << "страна происхождения\n";
  259.         cout << "country: " << country << "\n";
  260.     }
  261.     // получаем только массу
  262.     void get_weight() {
  263.         cout << "масса объекта\n";
  264.         cout << "weight: " << weight << "\n";
  265.     }
  266.     // получаем только калории
  267.     void get_kcal() {
  268.         cout << "калории в объекте\n";
  269.         cout << "kcal: " << kcal << "\n";
  270.     }
  271.     // получаем только содержание железа
  272.     void get_Fe() {
  273.         cout << "содержание железа в объекте\n";
  274.         cout << "Fe: " << Fe << "\n";
  275.     }
  276.     // получаем только содержание магния
  277.     void get_Mg() {
  278.         cout << "содержание магния в объекте\n";
  279.         cout << "Mg: " << Mg << "\n";
  280.     }
  281.     // получаем только содержание витамина А
  282.     void get_vitA() {
  283.         cout << "содержание витамина А в объекте\n";
  284.         cout << "vitA: " << vitA << "\n";
  285.     }
  286.     // получаем только содержание витамина B
  287.     void get_vitB() {
  288.         cout << "содержание витамина B в объекте\n";
  289.         cout << "vitB: " << vitB << "\n";
  290.     }
  291.     // получаем только содержание витамина C
  292.     void get_vitC() {
  293.         cout << "содержание витамина C в объекте\n";
  294.         cout << "vitC: " << vitC << "\n";
  295.     }
  296.     // выводит всю информацию о классе в файлик с соответствующим именем объекта класса
  297.     void to_xml(string name) {
  298.         ofstream fout;
  299.         name += ".xml";
  300.         fout.open(name);
  301.         fout << "--------------------------------\n";
  302.         fout << "актуальная информация: \n";
  303.         fout << "color: " << color << "\n";
  304.         fout << "type: " << type << "\n";
  305.         fout << "country: " << country << "\n";
  306.         fout << "weight: " << weight << "\n";
  307.         fout << "kcal: " << kcal << "\n";
  308.         fout << "Fe: " << Fe << "\n";
  309.         fout << "Mg: " << Mg << "\n";
  310.         fout << "vitA: " << vitA << "\n";
  311.         fout << "vitB: " << vitB << "\n";
  312.         fout << "vitC: " << vitC << "\n";
  313.         fout << "--------------------------------\n";
  314.         fout.close();
  315.     }
  316.     // деструктор
  317.     ~apple() {
  318.         cout << "деструктор сработал!\n";
  319.     }
  320.    
  321. };
  322. // дочерний класс ананас
  323. class pineapple : public apple {
  324. private: int *x;
  325. public:
  326.     pineapple() : apple() {
  327.         // выделили память!
  328.         x = new int;
  329.     }
  330.     void increase_value() {
  331.         value++;
  332.         // благодаря protected теперь дочерний класс pineapple имеет право доступа к value из apple
  333.     }
  334.     ~pineapple() {
  335.         // очистили память!
  336.         delete x;
  337.         cout << "pineapple was destructed\n";
  338.     }
  339.     // установить загадочное х в ананасе
  340.     void set_x(int p) {
  341.         *x = p;
  342.     }
  343.     // получить загадочное х в ананасе
  344.     void get_x() {
  345.         cout << *x << ": current value\n";
  346.     }
  347. };
  348. const apple operator+(const apple& left, const apple& right) {
  349.     string coun = min(left.country, right.country) + " or " + max(left.country , right.country);
  350.     string clr = min(left.color, right.color) + " or " + max(left.color , right.color);
  351.     string type = min(left.type, right.type) + " or " + max(left.type , right.type);
  352.     int F = left.Fe + right.Fe;
  353.     int M = left.Mg + right.Mg;
  354.     int wei = left.weight + right.weight;
  355.     int cal = left.kcal + right.kcal;
  356.     int vA = left.vitA + right.vitA;
  357.     int vB = left.vitB + right.vitB;
  358.     int vC = left.vitC + right.vitC;
  359.     return apple(clr , type , coun , wei , cal , F , M , vA , vB , vC);
  360. }
  361. const apple operator*(const apple& left, const apple& right) {
  362.     string coun = min(left.country, right.country) + " and " + max(left.country , right.country);
  363.     string clr = min(left.color, right.color) + " and " + max(left.color , right.color);
  364.     string type = min(left.type, right.type) + " and " + max(left.type , right.type);
  365.     int F = left.Fe * right.Fe;
  366.     int M = left.Mg * right.Mg;
  367.     int wei = left.weight * right.weight;
  368.     int cal = left.kcal * right.kcal;
  369.     int vA = left.vitA * right.vitA;
  370.     int vB = left.vitB * right.vitB;
  371.     int vC = left.vitC * right.vitC;
  372.     return apple(clr , type , coun , wei , cal , F , M , vA , vB , vC);
  373. }
  374. ostream& operator<<(ostream& os, const apple& app) {
  375.     os << "--------------------------------\n";
  376.     os << "актуальная информация: \n";
  377.     os << "color: " << app.color << "\n";
  378.     os << "type: " << app.type << "\n";
  379.     os << "country: " << app.country << "\n";
  380.     os << "weight: " << app.weight << "\n";
  381.     os << "kcal: " << app.kcal << "\n";
  382.     os << "Fe: " << app.Fe << "\n";
  383.     os << "Mg: " << app.Mg << "\n";
  384.     os << "vitA: " << app.vitA << "\n";
  385.     os << "vitB: " << app.vitB << "\n";
  386.     os << "vitC: " << app.vitC << "\n";
  387.     os << "--------------------------------\n";
  388.     return os;
  389. }
  390. int main() {
  391.     ios_base::sync_with_stdio(false);
  392.     cin.tie(0); cout.tie(0);
  393.     setlocale(LC_ALL, "rus");
  394.     srand(time(0));
  395.     string cl, tp, ctr;
  396.     int Fe, Mg, kcal, weight, vitA, vitB, vitC;
  397.     cl = "red";
  398.     tp = "apple";
  399.     ctr = "Russia";
  400.     weight = 10;
  401.     kcal = 34;
  402.     Fe = 23;
  403.     Mg = 24;
  404.     vitA = 14;
  405.     vitB = 98;
  406.     vitC = 67;
  407.     apple x;
  408.     // удобная инициализация нового яблока случайным образом
  409.     x.set_rand_apple();
  410.     // вывсести актулальную информацию
  411.     x.get_all_info();
  412.     // вывод той же информации непосредственно через перегрузку операции '<<'
  413.     cout << x;
  414.     // пример для конструктора с двумя начальными данными
  415.     apple app(cl , tp);
  416.     // пример для конструктора если известен только цвет
  417.     apple app_clr(cl);
  418.     // пример для конструктора по умолчанию
  419.     apple st;
  420.     // перегрузка сложения
  421.     cout << app + x;
  422.     // перегрузка умножения
  423.     cout << app * x << "\n";
  424.     // проверка всех set/get
  425.     //цвет
  426.     st.set_color(cl);
  427.     st.get_color();
  428.     //тип
  429.     st.set_type(tp);
  430.     st.get_type();
  431.     // страна производства
  432.     st.set_country(ctr);
  433.     st.get_country();
  434.     // вес
  435.     st.set_weight(weight);
  436.     st.get_weight();
  437.     // калории
  438.     st.set_kcal(kcal);
  439.     st.get_kcal();
  440.     // содержание железа
  441.     st.set_Fe(Fe);
  442.     st.get_Fe();
  443.     // содержание магния
  444.     st.set_Mg(Mg);
  445.     st.get_Mg();
  446.     // содержание витамина А
  447.     st.set_vitA(vitA);
  448.     st.get_vitA();
  449.     // содержание витамина B
  450.     st.set_vitB(vitB);
  451.     st.get_vitB();
  452.     // содержание витамина C
  453.     st.set_vitC(vitC);
  454.     st.get_vitC();
  455.     //(список стран, откуда происходит рандомное распределение)
  456.     st.get_ctrs();
  457.     //(список цветов, откуда происходит рандомное распределение)
  458.     st.get_clrs();
  459.     //(список типов, откуда происходит рандомное распределение)
  460.     st.get_tps();
  461.     // чтобы отчистить словарь стран цветов или типов   st.clear_countries()   st.clear_colors()   st.clear_types()
  462.     st.clear_types();
  463.     vector<string> to_add;
  464.     cout << "введите размер словаря стран,на который вы хотите заменить старый словарь и затем введите n стран \n";
  465.     int n;
  466.     cin >> n;
  467.     for(int i = 0; i < n; i++) {
  468.         string cur;
  469.         cin >> cur;
  470.         to_add.push_back(cur);
  471.     }
  472.     st.new_countries(to_add);
  473.     to_add.clear();
  474.     cout << "введите размер словаря цветов,на который вы хотите заменить старый словарь и затем введите n цветов \n";
  475.     cin >> n;
  476.     for(int i = 0; i < n; i++) {
  477.         string cur;
  478.         cin >> cur;
  479.         to_add.push_back(cur);
  480.     }
  481.     st.new_colors(to_add);
  482.     to_add.clear();
  483.     cout << "введите размер словаря типов,на который вы хотите заменить старый словарь и затем введите n типов \n";
  484.     cin >> n;
  485.     for(int i = 0; i < n; i++) {
  486.         string cur;
  487.         cin >> cur;
  488.         to_add.push_back(cur);
  489.     }
  490.     st.new_types(to_add);
  491.     // вывод существующего объекта класса и информации о нем с соответвующий файлик .xml
  492.     st.to_xml("st");
  493.     pineapple piney ;
  494.     piney.set_x(123);
  495.     piney.get_x();
  496.     return 0;
  497. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top