Advertisement
Dimitrija

Laboratoriski 3 - 3 OOP

Mar 23rd, 2021
1,234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.10 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5. /*
  6. Во оваа задача потребно е да се внесат податоци за насловна страница на списание.
  7.  
  8. За претставување на насловната страница напишете класа FrontPage која ќе содржи:
  9. објект од класата NewsArticle која ја претставува насловната вест на страницата
  10. цена (float price) со предодредена вредност 0
  11. број на издание на списанието (int editionNumber) со предодредена вредност 0
  12. За класата FrontPage напишете предодреден (default) конструктор и конструктор со параметри. Класата NewsArticle треба да содржи:
  13.  
  14. објект од класата Category која ја претставува категоријата во која спаѓа веста
  15. наслов од максимум 30 знаци (char title[30]) со предодредена вредност untitled
  16. За класата NewsArticle напишете предодреден конструктор и конструктор со параметри.
  17.  
  18. Класата Category треба да содржи име од максимум 20 знаци (char name[20]) со предодредена вредност unnamed.
  19. За сите класи треба да напишете соодветен метод за печатење print().
  20. Внимајте на редоследот на параметрите во конструкторите. Не го менувајте main методот.
  21.  
  22. За категоријата се печати само името:
  23. Category: [name].
  24. За веста се печати насловот, па категоријата во нов ред:
  25. Title: [title]
  26. category.print()
  27. За насловната страница се печати цената и изданието во прв ред, па веста во втор:
  28. Price: [price], Edition number: [editionNumber]
  29. article.print()
  30.  
  31. For example:
  32. Input: 
  33. 2
  34. sport
  35. 120
  36. 2
  37. Result:
  38. Price: 120, Edition number: 2
  39. Article title: untitled
  40. Category: sport
  41. */
  42.  
  43. class Category{
  44. private:
  45.     enum Dolzina {NameDolz=20};
  46.     char name[NameDolz+1];
  47. public:
  48.     //Category();
  49.     Category(char *name = "unnamed");
  50.     void print();
  51. };
  52. /*
  53. Category::Category(){
  54.     strcpy(this->name,"unnamed");
  55. }
  56. */
  57. Category::Category(char *name){
  58.     strncpy(this->name,name,NameDolz);
  59.     this->name[NameDolz] = '\0';
  60. }
  61. void Category::print(){
  62.     cout<<"Category: "<<name<<endl;
  63. }
  64.  
  65.  
  66. class NewsArticle{
  67. private:
  68.     enum Dolzina{titleDolz=30};
  69.     Category CatObj;
  70.     char title[titleDolz+1];
  71. public:
  72.     NewsArticle();
  73.     //NewsArticle(Category CatObj);
  74.     NewsArticle(Category CatObj,char *title="untitled");
  75.     void print();
  76. };
  77. NewsArticle::NewsArticle(){
  78.         strcpy(this->title,"untitled");
  79. }
  80. /*
  81. NewsArticle::NewsArticle(Category CatObj){
  82.        this->CatObj = CatObj;
  83.        strcpy(this->title,"untitled");
  84. }
  85. */
  86. NewsArticle::NewsArticle(Category CatObj,char *title){
  87.         this->CatObj = CatObj;
  88.         strncpy(this->title,title,titleDolz);
  89.         this->title[titleDolz] = '\0';
  90. }
  91. void NewsArticle::print(){
  92.     cout<<"Article title: "<<title<<endl;
  93.     CatObj.print();
  94. }
  95.  
  96.  
  97. class FrontPage{
  98. private:
  99.     NewsArticle artObj;
  100.     float price;
  101.     int editionNumber;
  102. public:
  103.     FrontPage();
  104.     FrontPage(NewsArticle artObj,float price = 0.0 ,int editionNumber = 0);
  105.     void print();
  106. };
  107. FrontPage::FrontPage(){
  108.     this->price= 0.0;
  109.     this->editionNumber = 0;
  110. }
  111. void FrontPage::print(){
  112.     cout<<"Price: "<<this->price<<", Edition number: "<<this->editionNumber<<endl;
  113.     this->artObj.print();
  114. }
  115. FrontPage::FrontPage(NewsArticle artObj,float price,int editionNumber){
  116.    this->artObj = artObj;
  117.    this->price = price;
  118.    this->editionNumber = editionNumber;
  119. }
  120.  
  121. int main() {
  122.     char categoryName[20];
  123.     char articleTitle[30];
  124.     float price;
  125.     int editionNumber;
  126.  
  127.     int testCase;
  128.     cin >> testCase;
  129.  
  130.  
  131.     if (testCase == 1) {
  132.         int iter;
  133.         cin >> iter;
  134.         while (iter > 0) {
  135.             cin >> categoryName;
  136.             cin >> articleTitle;
  137.             cin >> price;
  138.             cin >> editionNumber;
  139.             Category category(categoryName);
  140.             NewsArticle article(category, articleTitle);
  141.             FrontPage frontPage(article, price, editionNumber);
  142.             frontPage.print();
  143.             iter--;
  144.         }
  145.     }
  146.     else if (testCase == 2) {
  147.         cin >> categoryName;
  148.         cin >> price;
  149.         cin >> editionNumber;
  150.         Category category(categoryName);
  151.         NewsArticle article(category);
  152.         FrontPage frontPage(article, price, editionNumber);
  153.         frontPage.print();
  154.     }// test case 3
  155.     else if (testCase == 3) {
  156.         cin >> categoryName;
  157.         cin >> articleTitle;
  158.         cin >> price;
  159.         Category category(categoryName);
  160.         NewsArticle article(category, articleTitle);
  161.         FrontPage frontPage(article, price);
  162.         frontPage.print();
  163.     }
  164.     else {
  165.         FrontPage frontPage = FrontPage();
  166.         frontPage.print();
  167.     }
  168.     return 0;
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement