Advertisement
Misipuk

KP2

Oct 22nd, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.73 KB | None | 0 0
  1. #include <conio.h>
  2. #include <cstdio>
  3. #include <time.h>
  4. #include <string>
  5. #include <string.h>
  6. #include <locale.h>
  7. #include <iostream>
  8. #include <iostream>
  9.  
  10. using namespace std;
  11.  
  12. class Date{
  13.     private:
  14.         int day;
  15.         int month;
  16.         int year;
  17.  
  18.     public:
  19.         Date(){
  20.             cout << "Date constructor" << endl;
  21.             time_t t=time(NULL);
  22.             struct tm* aTm = localtime(&t);
  23.             day=aTm->tm_mday;
  24.             month=aTm->tm_mon+1;
  25.             year=aTm->tm_year+1900;
  26.         }
  27.  
  28.         ~Date(){
  29.             cout << "Date destructor" << endl;
  30.         }
  31.  
  32.         Date(int d, int m, int y){
  33.             cout << "Date constructor param" << endl;
  34.             day = d;
  35.             month = m;
  36.             year = y;
  37.         }
  38.  
  39.         Date(const Date &d){
  40.             cout << "Date constructor copy" << endl;
  41.             day=d.day;
  42.             month=d.month;
  43.             year=d.year;
  44.         }
  45.  
  46.         int getDay(){
  47.             return day;
  48.         }
  49.  
  50.         Date& setDay(int d){
  51.             day = d;
  52.             return *this;
  53.         }
  54.  
  55.         int getMonth(){
  56.             return month;
  57.         }
  58.  
  59.         Date& setMonth(int m){
  60.             month = m;
  61.             return *this;
  62.         }
  63.  
  64.         int getYear(){
  65.             return year;
  66.         }
  67.  
  68.         Date& setYear(int y){
  69.             year = y;
  70.             return *this;
  71.         }
  72.  
  73.         void printDate(){
  74.             printf("Date: %02d.%02d.%02d\n", day, month, year);
  75.         }
  76. };
  77.  
  78. enum Type {instrumental,vocal, stishok, proza};
  79.  
  80. class Artist{
  81.     private:
  82.         char* name;
  83.         char* surname;
  84.  
  85.     public:
  86.         Artist(){
  87.             cout << "Artist constructor" << endl;
  88.             name = new char[5];
  89.             name = "Null";
  90.             surname = new char[5];
  91.             surname = "Null";
  92.         }
  93.  
  94.         Artist(char* n, char* m){
  95.             cout << "Artist constructor param" << endl;
  96.             name = new char[strlen(n)+1];
  97.             surname = new char[strlen(m)+1];
  98.             strcpy(name, n);
  99.             strcpy(surname, m);
  100.         }
  101.  
  102.         Artist(const Artist &a){
  103.             cout << "Artist constructor copy" << endl;
  104.             name = new char[strlen(a.name)+1];
  105.             surname = new char[strlen(a.surname)+1];
  106.             strcpy(name, a.name);
  107.             strcpy(surname, a.surname);
  108.         }
  109.  
  110.         ~Artist(){
  111.             cout << "Artist destructor" << endl;
  112.         }
  113.  
  114.         friend ostream& operator<<(ostream& os, Artist& artist);
  115.         friend istream& operator>>(istream& is, Artist& artist);
  116.  
  117.  
  118.         char* getName(){
  119.             return name;
  120.         }
  121.  
  122.         char* getSurname(){
  123.             return surname;
  124.         }
  125.  
  126.         Artist& setName(char* n){
  127.             name = new char[strlen(n)+1];
  128.             strcpy(name, n);
  129.             return *this;
  130.         }
  131.  
  132.         Artist& setSurname(char* n){
  133.             surname = new char[strlen(n)+1];
  134.             strcpy(surname, n);
  135.             return *this;
  136.         }
  137.  
  138.         void printArtistInfo(){
  139.             cout << "Name: " << name << " ";
  140.             cout << "Surname: " << surname << endl;
  141.         }
  142. };
  143.  
  144. ostream& operator<<(ostream& os, Artist& artist) {
  145.     cout << "Artist";
  146.     os << "Artist Name: " << artist.getName() << endl;
  147.     os << "Artist Surname: " << artist.getSurname() << endl;
  148.     return os;
  149. }
  150.  
  151. istream &operator>>(istream & is, Artist& artist) {
  152.     cout << "Artist Name: ";
  153.     is >> artist.getName();
  154.     cout << "Artist Surname: ";
  155.     is >> artist.getSurname();
  156.     return is;
  157. }
  158.  
  159.  
  160. class Scene: public Artist{//виступ
  161.     private:
  162.         Type type;
  163.         int dur;
  164.         char* title;
  165.  
  166.     public:
  167.         Scene(){
  168.             cout << "Scene constructor" << endl;
  169.             type = stishok;
  170.             title = new char[5];
  171.             title = "Null";
  172.             dur = 0;
  173.         }
  174.  
  175.         Scene(Type ty, char* n, char* m, char* t, int d): Artist(n, m){
  176.             cout << "Scene constructor param" << endl;
  177.             type = ty;
  178.             title = new char[strlen(t)+1];
  179.             strcpy(title, t);
  180.             dur = d;
  181.         }
  182.  
  183.         Scene(Scene &sc): Artist(sc.getName(), sc.getSurname()){
  184.             cout << "Scene constructor copy" << endl;
  185.             type = sc.type;
  186.             title = new char[strlen(sc.title)+1];
  187.             strcpy(title, sc.title);
  188.             dur = sc.dur;
  189.         }
  190.  
  191.         ~Scene(){
  192.             cout << "Scene destructor" << endl;
  193.         }
  194.  
  195.         void printInfo(){
  196.             switch(type){
  197.             case(instrumental):
  198.                 {
  199.                     cout << "Type: " << "Instrumental" << endl;
  200.                     break;
  201.                 }
  202.             case(vocal):
  203.                 {
  204.                     cout << "Type: " << "Vocal" << endl;
  205.                     break;
  206.                 }
  207.             case(stishok):
  208.                 {
  209.                     cout << "Type: " << "Stishok" << endl;
  210.                     break;
  211.                 }
  212.             case(proza):
  213.                 {
  214.                     cout << "Type: " << "Proza" << endl;
  215.                     break;
  216.                 }
  217.             }
  218.             cout << "Title: " << title << endl;
  219.             cout << "Artist info: " << endl;
  220.             printArtistInfo();
  221.             cout << "Duration: " << dur << endl;
  222.         }
  223.  
  224.         char* getTitle(){
  225.             return title;
  226.         }
  227.  
  228.         Scene& setTitle(char* t){
  229.             title = new char[strlen(t)+1];
  230.             strcpy(title, t);
  231.             return *this;
  232.         }
  233.  
  234.         Type getType(){
  235.             return type;
  236.         }
  237.  
  238.         Scene& setType(Type t){
  239.             type = t;
  240.             return *this;
  241.         }
  242.  
  243.  
  244.         int getDur(){
  245.             return dur;
  246.         }
  247.  
  248.         Scene& setDur(int d){
  249.             dur = d;
  250.             return *this;
  251.         }
  252.  
  253.         void getArtist(){
  254.  
  255.         }
  256.  
  257.     friend ostream& operator<<(ostream& os, Scene& scene);
  258.     friend istream& operator>>(istream& is, Scene& scene);
  259.  
  260.  
  261. };
  262.  
  263. ostream& operator<<(ostream& os, Scene& scene)
  264. {
  265.     os << "Scene title: " << scene.getTitle() << endl;
  266.     os << "Type: ";
  267.     switch(scene.getType()){
  268.         case(instrumental):
  269.             {
  270.                 cout << "Type: " << "Instrumental" << endl;
  271.                 break;
  272.             }
  273.         case(vocal):
  274.             {
  275.                 cout << "Type: " << "Vocal" << endl;
  276.                 break;
  277.             }
  278.         case(stishok):
  279.             {
  280.                 cout << "Type: " << "Stishok" << endl;
  281.                 break;
  282.             }
  283.         case(proza):
  284.             {
  285.                 cout << "Type: " << "Proza" << endl;
  286.                 break;
  287.             }
  288.     }
  289.     os << endl;
  290.     scene.printArtistInfo();
  291.     os << "Duration: " << scene.dur << endl;
  292.     os << endl;
  293.     return os;
  294. }
  295.  
  296. istream &operator>>(istream & is, Scene& scene)
  297. {
  298.     cout << "Scene title: ";
  299.     is >> scene.title;
  300.     cout << "Type: 1. Instrumental, 2. Vocal, 3. Stishok, 4. Proza" << endl;
  301.     cout << "Enter from 1 to 5: ";
  302.     int c;
  303.     is >> c;
  304.     switch (c - 1)
  305.     {
  306.         case(instrumental):
  307.             {
  308.                 scene.type = instrumental;
  309.                 break;
  310.             }
  311.         case(vocal):
  312.             {
  313.                 scene.type = vocal;
  314.                 break;
  315.             }
  316.         case(stishok):
  317.             {
  318.                 scene.type = stishok;
  319.                 break;
  320.             }
  321.         case(proza):
  322.             {
  323.                 scene.type = proza;
  324.                 break;
  325.             }
  326.     }
  327.     cout << "Artist Name: ";
  328.     char* s;
  329.     s = new char[20];
  330.     is >> s;
  331.     scene.setName(s);
  332.     cout << "Artist Surname: ";
  333.     is >> s;
  334.     scene.setSurname(s);
  335.     cout << "Duration:";
  336.     cin >> scene.dur;
  337.     return is;
  338. }
  339.  
  340.  
  341. class Concert{
  342.     private:
  343.         char* org;
  344.         Date date;
  345.         Scene* scenes;
  346.         int cnt;
  347.     public:
  348.         Concert(){
  349.             cout << "Concert constructor" << endl;
  350.             org = new char[5];
  351.             org = "Null";
  352.             date = Date();
  353.             cnt = 0;
  354.         }
  355.  
  356.         Concert(char* o, Date& d, Scene* sc, int c){
  357.             cout << "Concert constructor param" << endl;
  358.             org = new char[strlen(o)+1];
  359.             strcpy(org, o);
  360.             date = Date(d);
  361.             cnt = c;
  362.             scenes = new Scene[cnt];
  363.             for(int i=0; i<cnt; i++){
  364.                 scenes[i] = sc[i];
  365.             }
  366.         }
  367.  
  368.         Concert(Concert const &c){
  369.             cout << "Concert constructor copy" << endl;
  370.             org = new char[strlen(c.org)+1];
  371.             strcpy(org, c.org);
  372.             date = Date(c.date);
  373.             cnt = c.cnt;
  374.             scenes = new Scene[cnt];
  375.             for(int i=0; i<cnt; i++){
  376.                 scenes[i] = c.scenes[i];
  377.             }
  378.         }
  379.  
  380.         ~Concert(){
  381.             cout << "Concert destructor" << endl;
  382.         }
  383.  
  384.         char* getOrg(){
  385.             return org;
  386.         }
  387.  
  388.         Concert& setOrg(char* o){
  389.             org = new char[strlen(o)+1];
  390.             strcpy(org, o);
  391.             return *this;
  392.         }
  393.  
  394.         Date& getDate(){
  395.             return date;
  396.         }
  397.  
  398.         Concert& setDate(Date d){
  399.             date = d;
  400.             return *this;
  401.         }
  402.  
  403.         Scene* getScenes(){
  404.             return scenes;
  405.         }
  406.  
  407.         Concert& setScenes(int c, Scene* sc){
  408.             cnt = c;
  409.             scenes = new Scene[cnt];
  410.             for(int i=0; i<cnt; i++){
  411.                 scenes[i] = sc[i];
  412.             }
  413.             return *this;
  414.         }
  415.  
  416.         int getCount(){
  417.             return cnt;
  418.         }
  419.  
  420.         Concert& addOne(const Scene& sc){
  421.             Scene* newScenes = new Scene[cnt+1];
  422.             for (int i=0; i<cnt; i++){
  423.                 newScenes[i] = scenes[i];
  424.             }
  425.             newScenes[cnt] = sc;
  426.             cnt++;
  427.             scenes = new Scene[cnt];
  428.             for(int i=0; i<cnt; i++){
  429.                 scenes[i] = newScenes[i];
  430.             }
  431.             return *this;
  432.         }
  433.  
  434.         void printInfo(){
  435.             cout << "Org: " << org << endl;
  436.             for (int i=0; i<cnt; i++){
  437.                 cout << "Scene " << i+1 << ":" << endl;
  438.                 scenes[i].printInfo();
  439.                 cout << endl;
  440.             }
  441.             cout << "Date: ";
  442.             date.printDate();
  443.             cout << "Count: " << cnt << endl;
  444.         }
  445.  
  446.         void shortInfo(){
  447.             cout << "Org: " << org << endl;
  448.             for (int i=0; i<cnt; i++){
  449.                 cout << "Title:" << scenes[i].getTitle() << endl;
  450.                 cout << "Duration: " << scenes[i].getDur() << endl;
  451.                 cout << endl;
  452.             }
  453.         }
  454.  
  455.         friend ostream& operator<<(ostream& os, Concert& concert);
  456.  
  457.         friend istream& operator>>(istream& is, Concert& concert);
  458.  
  459.  
  460. };
  461.  
  462. ostream& operator<<(ostream& os, Concert& concert) {
  463.     os << "Cocnert org: " << concert.org << endl;
  464.     concert.getDate().printDate();
  465.     for (int i=0; i<concert.cnt; i++){
  466.                 os << "Scene " << i+1 << ":" << endl;
  467.                 concert.scenes[i].printInfo();
  468.                 os << endl;
  469.             }
  470.     os << endl;
  471.     return os;
  472. }
  473.  
  474.  
  475. istream& operator>>(istream& is, Concert& concert) {
  476.     cout << "Cocnert org:";
  477.     is >> concert.org;
  478.     cout << "Scenes count : ";
  479.     is >> concert.cnt;
  480.     concert.scenes = new Scene[concert.cnt];
  481.     for(int i=0; i<concert.cnt; i++){
  482.         is >> concert.scenes[i];
  483.     }
  484.     cout << endl;
  485.     return is;
  486. }
  487.  
  488.  
  489. int main()
  490. {
  491. //    Date d(5,7,10);
  492. //    d.printDate();
  493. //    d.setDay(7);
  494. //    d.printDate();
  495. //    Artist a("Vasya", "Pupkin");
  496. //    a.printArtistInfo();
  497. //    a.setName("Vasiok");
  498. //    a.printInfo();
  499. //    cout << endl;
  500. //    Scene sc1(proza, "Vasya", "Pupkin", "Yeah1", stishok);
  501. //    Scene sc2(proza, "Vasya", "Pupkin", "Yeah2", stishok);
  502. //    Scene sc3(proza, "Vasya", "Pupkin", "Yeah3", stishok);
  503. //    sc1.printInfo();
  504. //   Scene* scs = new Scene[3];
  505. //    scs[0] = sc1;
  506. //    scs[1] = sc2;
  507. //    scs[2] = sc3;
  508. //    cout << endl;
  509.     cout << "<< Artist empty >>" << endl;
  510.     Artist a1;
  511.     cout << "<< Artist with param >>" << endl;
  512.     Artist a2("Vasya", "Pupkin");
  513.     cout << "<< Artist copy >>" << endl;
  514.     Artist a3(a2);
  515.     cout << endl;
  516.     cout << "<< Scene empty >>" << endl;
  517.     Scene s1;
  518.     cout << "<< Artist with param >>" << endl;
  519.     Scene s2(proza, "Vasya", "Pupkin", "Yeah2", stishok);
  520.     cout << "<< Artist copy >>" << endl;
  521.     Scene s3(s2);
  522.     cout << endl;
  523.     Scene sc1(proza, "Vasya", "Pupkin", "Yeah1", stishok);
  524.     Scene* scs = new Scene[3];
  525.     scs[0] = sc1;
  526.     scs[1] = s2;
  527.     cout << endl;
  528.     cout << endl;
  529.     cout << endl;
  530.     Date d ;
  531.     Concert c = Concert("Slava", d, scs, 2);
  532.     c.shortInfo();
  533.     cout << endl;
  534.     return 0;
  535. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement