ivanakarpuzova

Untitled

Sep 3rd, 2017
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.85 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. class NegativnaVrednost{
  6.  
  7. };
  8.  
  9. class Zdelka{
  10. private:
  11. char ime[100];
  12. float osnovnaCena;
  13. char vremeTraenje[100];
  14. int osnovenPopust = 10;
  15. int dopolnitelenPopust;
  16. int prodadeniKuponi;
  17.  
  18. public:
  19. Zdelka(){}
  20. Zdelka(char *Ime, float OsnovnaCena, char *VremeTraenje, int OsnovenPopust,int ProdadeniKuponi){
  21. strcpy(ime, Ime);
  22. osnovnaCena = OsnovnaCena;
  23. strcpy(vremeTraenje, VremeTraenje);
  24. osnovenPopust = OsnovenPopust;
  25. dopolnitelenPopust = 0;
  26. prodadeniKuponi = ProdadeniKuponi;
  27.  
  28. }
  29. int setPopust1(int popust){
  30. osnovenPopust = popust;
  31. }
  32. int cena_so_popust(){
  33. return osnovnaCena - (osnovnaCena * osnovenPopust + dopolnitelenPopust) / 100;
  34. }
  35. friend ostream& operator<< (ostream &out, Zdelka &z)
  36. {
  37. out<<z.ime<<endl;
  38. out << "Trae do: "<< z.vremeTraenje << ", prodadeni kuponi: "<< z.prodadeniKuponi << ", cena: " << z.osnovnaCena << ", cena so popust: " << z.cena_so_popust()<< endl;
  39. return out;
  40. }
  41.  
  42. int getDopolnitelenPopust(){
  43. return dopolnitelenPopust;
  44. }
  45. int getProdadeniKuponi(){
  46. return prodadeniKuponi;
  47. }
  48. };
  49.  
  50. class FINKI_Zdelki {
  51. private:
  52. Zdelka *zdelki;
  53. int broj;
  54. public:
  55. FINKI_Zdelki(){
  56. broj = 0;
  57. zdelki = new Zdelka[broj];
  58. }
  59. FINKI_Zdelki& operator+= (Zdelka &z)
  60. {
  61. if(z.getDopolnitelenPopust() < 0){
  62. throw NegativnaVrednost();
  63. }
  64. else{
  65. Zdelka *tmp = new Zdelka[broj+1];
  66. for(int i = 0; i < broj; i++){
  67. tmp[i] = zdelki[i];
  68. }
  69. tmp[broj] = z;
  70. broj++;
  71. delete [] zdelki;
  72. zdelki = tmp;
  73. }
  74.  
  75.  
  76. return *this;
  77. }
  78.  
  79. friend ostream& operator<< (ostream &out, FINKI_Zdelki &z)
  80. {
  81. for(int i = 0; i < z.broj; i++){
  82. out << z.zdelki[i];
  83. }
  84. return out;
  85. }
  86.  
  87. void najprodavaniZdelki(){
  88. int suma = 0;
  89. for(int i = 0; i < broj; i++){
  90. suma += zdelki[i].getProdadeniKuponi();
  91. }
  92. int prosek = suma / broj;
  93.  
  94. for(int i = 0; i < broj; i++){
  95. if(zdelki[i].getProdadeniKuponi() > prosek){
  96. cout << zdelki[i];
  97. }
  98. }
  99. }
  100.  
  101. ~FINKI_Zdelki(){ delete [] zdelki;}
  102. };
  103. int main(){
  104. int testCase;
  105. cin >> testCase;
  106.  
  107. char ime[100];
  108. float cena;
  109. char traeDo[50];
  110. int popust;
  111. int prodKuponi;
  112.  
  113. if (testCase == 1){
  114. cout << "===== Testiranje na klasata Zdelka ======" << endl;
  115. cin.get();
  116. cin.getline(ime,100);
  117. cin >> cena;
  118. cin.get();
  119. cin.getline(traeDo,50);
  120. cin >> popust;
  121. cin >> prodKuponi;
  122. cout << "===== CONSTRUCTOR ======" << endl;
  123. Zdelka z(ime, cena, traeDo, popust, prodKuponi);
  124. cout << z;
  125.  
  126. }
  127. if (testCase == 2){
  128. cout << "===== Testiranje na static clenovi ======" << endl;
  129. cin.get();
  130. cin.getline(ime,100);
  131. cin >> cena;
  132. cin.get();
  133. cin.getline(traeDo,50);
  134. cin >> popust;
  135. cin >> prodKuponi;
  136. cout << "===== CONSTRUCTOR ======" << endl;
  137. Zdelka z(ime, cena, traeDo, popust, prodKuponi);
  138. cout << z;
  139.  
  140. z.setPopust1(15);
  141.  
  142. cout << z;
  143. }
  144. if (testCase == 3){
  145. cout << "===== Testiranje na klasata FINKI-Zdelki ======" << endl;
  146. cout << "CONSTRUCTOR" << endl;
  147. FINKI_Zdelki fz;
  148. int n;
  149. cin >> n;
  150. cout << "OPERATOR +=" << endl;
  151. for(int i = 0; i < n; ++i) {
  152. cin.get();
  153. cin.getline(ime,100);
  154. cin >> cena;
  155. cin.get();
  156. cin.getline(traeDo,50);
  157. cin >> popust;
  158. cin >> prodKuponi;
  159. Zdelka z(ime, cena, traeDo, popust, prodKuponi);
  160. try{
  161. fz += z;
  162. }
  163. catch(NegativnaVrednost) {
  164. cout << "Frlam isklucok nevalidna vrednost" << endl;
  165. }
  166. }
  167. cout << fz <<endl;
  168.  
  169. Zdelka x("Pica po izbor", 250, "01.10.2016", 42, 15);
  170. FINKI_Zdelki fz1 = fz;
  171. try{
  172. fz+=x;
  173. }
  174. catch(NegativnaVrednost) {
  175. cout << "Frlam isklucok nevalidna vrednost" << endl;
  176. }
  177. cout << fz << endl;
  178. cout << fz1 << endl;
  179. }
  180. if (testCase == 4){
  181. cout << "===== Testiranje na operatorot += (celosna verzija) ======" << endl;
  182. FINKI_Zdelki fz;
  183. int n;
  184. cin >> n;
  185. cout << "OPERATOR +=" << endl;
  186. for(int i = 0; i < n; ++i) {
  187. cin.get();
  188. cin.getline(ime,100);
  189. cin >> cena;
  190. cin.get();
  191. cin.getline(traeDo,50);
  192. cin >> popust;
  193. cin >> prodKuponi;
  194. Zdelka z(ime, cena, traeDo, popust, prodKuponi);
  195. try{
  196. fz += z;
  197. }
  198. catch(NegativnaVrednost) {
  199. cout << "Frlam isklucok nevalidna vrednost" << endl;
  200. }
  201.  
  202. }
  203. cout << fz;
  204. }
  205.  
  206. if (testCase == 5){
  207. cout << "===== Testiranje na metodot najprodavaniZdelki ======" << endl << endl;
  208. FINKI_Zdelki fz;
  209. int n;
  210. cin >> n;
  211. for(int i = 0; i < n; ++i) {
  212. cin.get();
  213. cin.getline(ime,100);
  214. cin >> cena;
  215. cin.get();
  216. cin.getline(traeDo,50);
  217. cin >> popust;
  218. cin >> prodKuponi;
  219. Zdelka z(ime, cena, traeDo, popust, prodKuponi);
  220. try{
  221. fz += z;
  222. }
  223. catch(NegativnaVrednost) {
  224. cout << "Frlam isklucok nevalidna vrednost" << endl;
  225. }
  226. }
  227. cout << "Site zdelki:" << endl;
  228. cout << fz << endl;
  229.  
  230. cout << "Najprodavani zdelki:" << endl;
  231. fz.najprodavaniZdelki();
  232. }
  233.  
  234.  
  235. return 0;
  236. }
Advertisement
Add Comment
Please, Sign In to add comment