Advertisement
HeatPulse

FINKI-izdavacka kukja

May 25th, 2019
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.47 KB | None | 0 0
  1. FINKI-издавачка куќа Problem 10 (0 / 0)
  2. Издавачката куќа FINKI-Education издава онлајн и печатени книги. За секоја книга се чуваат податоци за ISBN бројот (низа од најмногу 20 знаци), насловот (низа од најмногу 50 знаци), авторот (низа од најмногу 30 знаци) и основната цена изразена во $ (реален број). Класата за опишување на книгите е апстрактна (5 поени).
  3.  
  4. За секоја онлајн книга дополнително се чуваат податоци за url од каде може да се симне (динамички резервирана низа од знаци) и големината изразена во MB (цел број). За секоја печатена книга дополнително се чуваат податоци за масата изразена во килограми (реален број) и дали ја има на залиха (логичка променлива). (5 поени)
  5.  
  6. За секој објект од двете изведени класи треба да бидат на располагање следниве методи:
  7.  
  8. Метод bookPrice, за пресметување на продажната цена на книгата на следниот начин: (10 поени)
  9. За онлајн книга - цената се зголемува за 20% од основната цена ако книгата е поголема од 20MB
  10.  
  11. За печатена книга - цената се зголемува за 15% од основната цена ако масата на книгата е поголема од 0.7kg
  12.  
  13. Преоптоварен оператор > за споредба на две книги од каков било вид според нивната цена. (5 поени)
  14. Преоптоварен оператор << за печатење на податоците за книгите во формат: (5 поени)
  15.  
  16. [ISBN]: [Наслов], [Автор] [Продажна цена]
  17.  
  18. Да се имплементира функција mostExpensiveBook со потпис:
  19.  
  20. void mostExpensiveBook (Book** books, int n)
  21.  
  22. во која се печати вкупниот број на онлајн, односно, печатени книги во проследената низа посебно. (5 поени) Потоа се наоѓа и печати најскапата книга. (5 поени)
  23.  
  24. Да се обезбедат сите потребни функции за правилно функционирање на програмата. (5 поени)
  25.  
  26. int main(){
  27.  
  28. char isbn[20], title[50], author[30], url[100];
  29. int size, tip;
  30. float price, weight;
  31. bool inStock;
  32. Book **books;
  33. int n;
  34.  
  35. int testCase;
  36. cin >> testCase;
  37.  
  38. if (testCase == 1){
  39. cout << "====== Testing OnlineBook class ======" << endl;
  40. cin >> n;
  41. books = new Book *[n];
  42.  
  43. for (int i = 0; i < n; i++){
  44. cin >> isbn;
  45. cin.get();
  46. cin.getline(title, 50);
  47. cin.getline(author, 30);
  48. cin >> price;
  49. cin >> url;
  50. cin >> size;
  51. cout << "CONSTRUCTOR" << endl;
  52. books[i] = new OnlineBook(isbn, title, author, price, url, size);
  53. cout << "OPERATOR <<" << endl;
  54. cout << *books[i];
  55. }
  56. cout << "OPERATOR >" << endl;
  57. cout << "Rezultat od sporedbata e: " << endl;
  58. if (*books[0] > *books[1])
  59. cout << *books[0];
  60. else
  61. cout << *books[1];
  62. }
  63. if (testCase == 2){
  64. cout << "====== Testing OnlineBook CONSTRUCTORS ======" << endl;
  65. cin >> isbn;
  66. cin.get();
  67. cin.getline(title, 50);
  68. cin.getline(author, 30);
  69. cin >> price;
  70. cin >> url;
  71. cin >> size;
  72. cout << "CONSTRUCTOR" << endl;
  73. OnlineBook ob1(isbn, title, author, price, url, size);
  74. cout << ob1 << endl;
  75. cout << "COPY CONSTRUCTOR" << endl;
  76. OnlineBook ob2(ob1);
  77. cin >> isbn;
  78. ob2.setISBN(isbn);
  79. cout << ob1 << endl;
  80. cout << ob2 << endl;
  81. cout << "OPERATOR =" << endl;
  82. ob1 = ob2;
  83. cin >> isbn;
  84. ob2.setISBN(isbn);
  85. cout << ob1 << endl;
  86. cout << ob2 << endl;
  87. }
  88. if (testCase == 3){
  89. cout << "====== Testing PrintBook class ======" << endl;
  90. cin >> n;
  91. books = new Book *[n];
  92.  
  93. for (int i = 0; i < n; i++){
  94. cin >> isbn;
  95. cin.get();
  96. cin.getline(title, 50);
  97. cin.getline(author, 30);
  98. cin >> price;
  99. cin >> weight;
  100. cin >> inStock;
  101. cout << "CONSTRUCTOR" << endl;
  102. books[i] = new PrintBook(isbn, title, author, price, weight, inStock);
  103. cout << "OPERATOR <<" << endl;
  104. cout << *books[i];
  105. }
  106. cout << "OPERATOR >" << endl;
  107. cout << "Rezultat od sporedbata e: " << endl;
  108. if (*books[0] > *books[1])
  109. cout << *books[0];
  110. else
  111. cout << *books[1];
  112. }
  113. if (testCase == 4){
  114. cout << "====== Testing method mostExpensiveBook() ======" << endl;
  115. cin >> n;
  116. books = new Book *[n];
  117.  
  118. for (int i = 0; i<n; i++){
  119.  
  120. cin >> tip >> isbn;
  121. cin.get();
  122. cin.getline(title, 50);
  123. cin.getline(author, 30);
  124. cin >> price;
  125. if (tip == 1) {
  126.  
  127. cin >> url;
  128. cin >> size;
  129.  
  130. books[i] = new OnlineBook(isbn, title, author, price, url, size);
  131.  
  132. }
  133. else {
  134. cin >> weight;
  135. cin >> inStock;
  136.  
  137. books[i] = new PrintBook(isbn, title, author, price, weight, inStock);
  138. }
  139. }
  140.  
  141. mostExpensiveBook(books, n);
  142. }
  143.  
  144. for (int i = 0; i<n; i++) delete books[i];
  145. delete[] books;
  146. return 0;
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement