Advertisement
VictoriaLodochkina

lab 1 sem 3 popitka1

Sep 6th, 2020
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.18 KB | None | 0 0
  1. HEADER
  2. #ifndef ANALYSIS_H_
  3. #define ANALYSIS_H_
  4. #include <string>
  5. class Analysis
  6. {
  7. private:
  8.     std::string m_name;
  9.     int m_date;     //дата основания
  10.     bool m_abel;    //получал ли кто-либо Абелевскую премию за открытия в этой области
  11. public:
  12.     Analysis();
  13.     Analysis(const std::string&, const int, bool);
  14.     Analysis(const Analysis&);
  15.     ~Analysis();
  16.     Analysis& operator=(Analysis math);
  17. };
  18. #endif
  19.  
  20. SOURCE
  21. #include <iostream>
  22. #include "Analysis.h"
  23. Analysis::Analysis(): m_name("none"), m_date(0), m_abel(false)
  24. {
  25.     std::cout << "Constructor without params." << std::endl << "Name = " << m_name << ", date = " << m_date << ", abel = " << m_abel << "." << std::endl;
  26. }
  27.  
  28. Analysis::Analysis(const std::string& m_name, const int m_date, bool m_abel)
  29. {
  30.     this->m_name = m_name;
  31.     this->m_date = m_date;
  32.     this->m_abel = m_abel;
  33.     std::cout << "Constructor with params." << std::endl << "Name = " << m_name << ", date = " << m_date << ", abel = " << m_abel << "." << std::endl;
  34. }
  35.  
  36. Analysis::Analysis(const Analysis& mat_an)
  37. {
  38.     m_name = mat_an.m_name;
  39.     m_date = mat_an.m_date;
  40.     m_abel = mat_an.m_abel;
  41.     std::cout << "Copy constructor." << std::endl << "Name = " << m_name << ", date = " << m_date << ", abel = " << m_abel << "." << std::endl;
  42. }
  43.  
  44. Analysis::~Analysis()
  45. {
  46.     std::cout << "Destructor for object with values:" << std::endl << "Name = " << m_name << ", date = " << m_date << ", abel = " << m_abel << "." << std::endl;
  47. }
  48.  
  49. Analysis& Analysis::operator=(Analysis math)
  50. {
  51.     this->m_name = math.m_name;
  52.     this->m_date = math.m_date;
  53.     this->m_abel = math.m_abel;
  54.     std::cout << "Operator =." << std::endl << "Name = " << m_name << ", date = " << m_date << ", abel = " << m_abel << "." << std::endl;
  55.     return *this;
  56. }
  57.  
  58.  
  59. REALIZ
  60. #include <iostream>
  61. #include "Analysis.h"
  62.  
  63. using namespace std;
  64.  
  65. int main()
  66. {
  67.     int n, part;
  68.     cout << "Enter the mas size: " << endl;
  69.     cin >> n;
  70.     Analysis* mas = new Analysis[n];
  71.     Analysis* din = new Analysis;
  72.     for (int i = 0; i < n; i++)
  73.     {
  74.         cout << "This is " << i + 1 << " element." << endl << "For creating object with params press 1, for creating with copy press 2." << endl << "For creating object without params press 3, for exit press 4." << endl;
  75.         cin >> part;
  76.         switch (part) {
  77.         case 1: {
  78.             string name; int date; bool abel;
  79.             cout << "Enter name: ";
  80.             cin >> name;
  81.             cout << "Enter date: ";
  82.             cin >> date;
  83.             cout << "Enter abel: ";
  84.             cin >> abel;
  85.             mas[i] = Analysis(name, date, abel);
  86.             break; }
  87.         case 2:
  88.             int pos;
  89.             cout << "Enter position of copied element: ";
  90.             cin >> pos;
  91.             while ((pos > n) || (pos < 1))
  92.             {
  93.                 cout << "Error. Please, try again." << endl;
  94.                 cin >> pos;
  95.             }
  96.             mas[i] = Analysis(mas[pos - 1]);
  97.             break;
  98.  
  99.         case 3:
  100.             //Analysis I_love_matanchek = Analysis();
  101.             break;
  102.         case 4:
  103.             i = n;
  104.             break;
  105.         default: cout << "Error. Please, try again.";
  106.             i--;
  107.             break;
  108.         }
  109.     }
  110.  
  111.     cout << "If you want to delete all objects, enter 'y', else enter 'n'" << endl;
  112.     char answer;
  113.     cin >> answer;
  114.     if (answer == 'y')
  115.     {
  116.         for (int i = 0; i < n; i++)
  117.         {
  118.             mas[i].~Analysis();
  119.         }
  120.         delete din;
  121.     }
  122.     system("pause");
  123.     return 0;
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement