Advertisement
Guest User

Ekskurzija ispitna

a guest
Sep 19th, 2019
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.56 KB | None | 0 0
  1. /*
  2. Да се дефинира класа Ekskurzija и за неа да се чуваат следните информации:
  3. Име dinamicki alocirano - Превозно средство int (0 - автобус, 1 - авион)
  4. Месец во кој ќе се изведува int (вредностите се од 1 - јануари до 12 - декември)
  5. Времетраење во денови int - Цена по ден во евра double - Број на патници int
  6.  
  7. За класата Ekskurzija да се имплементира конструкторот со аргументи, default конструкторот, операторот за доделување и доколку е потребно, get() и set() методите за атрибутите на класата. (15 поени)
  8. operator++ shto ke zgolemi brojot na patnici za +1 (5 poeni)
  9. operator + shto ke spoi dve ekskurzii na nacin: ime1+ime2, denovi1+denovi2, 90% od zbirot na cenite za dvete ekskurzii i da se trgnuva od taa ekskurzija shto e prva vo kalendarot (10 poeni)
  10.  
  11. Да се дефинира класа TuristichkaAgencija за која се чуваат информации за:
  12. името на агенцијата char[50]
  13. екскурзии кои ги нуди агенцијата (dinamicki alocirana niza od Ekskurzija).
  14. Број на екскурзии int
  15.  
  16. operator+= za dodavanje ekskurzija (10 poeni)
  17. Operator-= za brisenje ekskurzija (10 poeni)
  18. najgolemProfit() vrakja od koja ekskurzija zarabotuva najvekje agencijata, cenata se presmetuva: cena*brojPatnici*denovi
  19.  
  20. Туристичката агенција може да биде традиционална или online туристичка агенција. За класите TuristichkaAgencija, TradicionalnaTuristichkaAgencija и OnlineTuristichkaAgencija да се имплементираат конструкторот со аргументи, default конструкторот и доколку е потребно, get() и set() методите за атрибутите на класата.. (15 поени)
  21.  
  22. Секој кој е заинтересиран за екскурзија тоа може да го оствари преку некоја од туристичките агенции. Цената на екскурзиите се пресметува различно кај традиционалните и online туристичките агенции:
  23.  
  24. Кај традиционалните туристички агенции цената варира во зависност од месецот во кој треба да се патува и таа се пресметува по следната формула : времетраење на екскурзијата во денови * цена по ден * број на патници + 30 * k, каде за месеците јуни, јули, август k= 1.8, а за останатите k= 1.3.
  25. Кај оnline туристичките агенции цената се пресметува по формулата : времетраење на екскурзијата во денови * цена по ден * број на патници + 20*k, каде за месеците јуни, јули, август k= 2.5, а за останатите месеци k= 2.2 ако превозното средство е авион, а за сите други превозни средства k=1.8.
  26.  
  27. Вкупната добивка на туристичката агенција од ексурзиите треба да се пресмета со функцијата double vkupnaDobivka() која треба да се имплементира. Таа се пресметува како збир од цените кои ги наплаќаат туристичките агенции за сите екскурзии. (20 поени)
  28. Agencija preku koja pateuvale najvekje patnici i agencija preku koja patuvale najmalku (10 poeni)
  29. Agencija so najgolema dobivka (5poeni)
  30. */
  31.  
  32.  
  33. #include<iostream>
  34. using namespace std;
  35. class Ekskurzija{
  36. private:
  37. char *ime;
  38. int prevoz;
  39. int mesec;
  40. int denovi;
  41. int patnici;
  42. double evro;
  43. public:
  44. Ekskurzija(){}
  45. Ekskurzija(char *ime,int prevoz, int mesec,int denovi, double evro, int patnici){
  46. this->ime=new char[strlen(ime)+1];
  47. strcpy(this->ime,ime);
  48. this->prevoz=prevoz;
  49. this->mesec=mesec;
  50. this->denovi=denovi;
  51. this->evro=evro;
  52. this->patnici=patnici;
  53. }
  54. Ekskurzija(const Ekskurzija &e){
  55. this->ime=new char[strlen(e.ime)+1];
  56. strcpy(this->ime,e.ime);
  57. this->prevoz=e.prevoz;
  58. this->mesec=e.mesec;
  59. this->denovi=e.denovi;
  60. this->evro=e.evro;
  61. this->patnici=e.patnici;
  62. }
  63. // prefix ++
  64. Ekskurzija &operator++(){
  65. this->patnici++;
  66. return *this;
  67. }
  68. // operator !=
  69. bool operator!=(Ekskurzija &e){
  70. if((strcmp(this->ime,e.ime)!=0)&&(this->evro!=e.evro)){
  71. return true;
  72. }else{
  73. return false;
  74. }
  75. }
  76. // operator +=
  77. Ekskurzija &operator+=(Ekskurzija &e){
  78. this->patnici+=e.patnici;
  79. return *this;
  80. }
  81. // operator +
  82. Ekskurzija &operator+(Ekskurzija &e){
  83. Ekskurzija nov;
  84. nov.ime=new char[strlen(this->ime)+strlen(e.ime)+2];
  85. strcat(nov.ime,this->ime);
  86. strcat(nov.ime,"+");
  87. strcat(nov.ime,e.ime);
  88. nov.denovi=this->denovi+e.denovi+1;
  89. nov.evro=(this->evro+e.evro)*0.9;
  90. nov.patnici=this->patnici+e.patnici;
  91. if(this->mesec<e.mesec){
  92. nov.mesec=this->mesec;
  93. }else{
  94. nov.mesec=e.mesec;
  95. }
  96. return nov;
  97. }
  98. friend ostream& operator<<(ostream &output,Ekskurzija &e){
  99. output<<e.ime<<" cena:"<<e.evro<<"e denovi:"<<e.denovi<<" patnici:"<<e.patnici<<" cena:"<<e.cenaEkskurzija()<<endl;
  100. return output;
  101. }
  102. int getPatnici(){
  103. return patnici;
  104. }
  105. float cenaEkskurzija(){
  106. return evro*denovi*patnici;
  107. }
  108. int getDenovi(){
  109. return denovi;
  110. }
  111. ~Ekskurzija(){
  112. //delete []ime;
  113. }
  114. };
  115. class TuristickaAgencija{
  116. protected:
  117. Ekskurzija *niza;
  118. int n;
  119. char imeA[50];
  120. public:
  121. // default constructor
  122. TuristickaAgencija(){
  123. this->n=0;
  124. this->niza=new Ekskurzija[0];
  125. }
  126. // samo ime constructor
  127. TuristickaAgencija(char imeA[]){
  128. strcpy(this->imeA,imeA);
  129. this->n=0;
  130. this->niza=new Ekskurzija[0];
  131. }
  132. void setIme(char ime[]){
  133. strcpy(this->imeA,ime);
  134. }
  135. // site parametri constructor
  136. TuristickaAgencija(char imeA[],Ekskurzija *niza,int n){
  137. strcpy(this->imeA,imeA);
  138. this->niza=new Ekskurzija[n];
  139. for(int i=0;i<n;i++){
  140. this->niza[i]=niza[i];
  141. }
  142. this->n=n;
  143. }
  144. // operator <<
  145. friend ostream& operator<<(ostream &output,TuristickaAgencija &dt){
  146. output<<dt.imeA<<" ve nosi vo:"<<endl;
  147. for(int i=0;i<dt.n;i++){
  148. output<<dt.niza[i];
  149. }
  150. return output;
  151. }
  152. // operator +=
  153. TuristickaAgencija& operator+=(Ekskurzija &nov){
  154. // cekor 1
  155. Ekskurzija *temp=new Ekskurzija[n];
  156. for(int i=0;i<n;i++){
  157. temp[i]=niza[i];
  158. }
  159. // cekor 2
  160. delete []niza;
  161. niza=new Ekskurzija[n+1];
  162. for(int i=0;i<n;i++){
  163. niza[i]=temp[i];
  164. }
  165. delete []temp;
  166. // cekor 3
  167. niza[n]=nov;
  168. n++;
  169. return *this;
  170. }
  171.  
  172. // operator -=
  173. TuristickaAgencija& operator-=(Ekskurzija &nov){
  174. // cekor 1
  175. Ekskurzija *temp=new Ekskurzija[n];
  176. int pomosenBrojac=0;
  177. for(int i=0;i<n;i++){
  178. if(niza[i]!=nov){
  179. temp[pomosenBrojac]=niza[i];
  180. pomosenBrojac++;
  181. }
  182. }
  183. // cekor 2
  184. this->niza=new Ekskurzija[n-1];
  185. this->n--;
  186. for(int i=0;i<n;i++){
  187. niza[i]=temp[i];
  188. }
  189. // cekor 3
  190. delete []temp;
  191. return *this;
  192. }
  193.  
  194. // max/min
  195. void najgolemProfit(){
  196. float maxProfit=0;
  197. float minProfit=9999999;
  198. int pamtiIndexMax;
  199. int pamtiIndexMin;
  200. for(int i=0;i<n;i++){
  201. if(niza[i].cenaEkskurzija()>maxProfit){
  202. maxProfit=niza[i].cenaEkskurzija();
  203. pamtiIndexMax=i;
  204. }
  205. if(niza[i].cenaEkskurzija()<minProfit){
  206. minProfit=niza[i].cenaEkskurzija();
  207. pamtiIndexMin=i;
  208. }
  209. }
  210. cout<<"== Najvekje zarabotuvame od Ekskurzijata =="<<endl;
  211. cout<<niza[pamtiIndexMax];
  212. cout<<"== Najmalku zarabotuvame od Ekskurzijata =="<<endl;
  213. cout<<niza[pamtiIndexMin];
  214. }
  215. // suma
  216. int kolkuPatnici(){
  217. int suma=0;
  218. for(int i=0;i<n;i++){
  219. suma+=niza[i].getPatnici();
  220. }
  221. return suma;
  222. }
  223. // patniciNedela
  224. int kolkuPatniciNedela(){
  225. int brojPatnici=0;
  226. for(int i=0;i<n;i++){
  227. if(niza[i].getDenovi()>=7){
  228. brojPatnici+=niza[i].getPatnici();
  229. }
  230. }
  231. return brojPatnici;
  232. }
  233. // prosecna Cena
  234. float prosek(){
  235. float suma=0;
  236. for(int i=0;i<n;i++){
  237. suma+=niza[i].cenaEkskurzija();
  238. }
  239. return suma/n;
  240. }
  241.  
  242. ~TuristickaAgencija(){
  243. delete []niza;
  244. }
  245. };
  246. int main(){
  247. Ekskurzija niza[3];
  248. niza[0]=Ekskurzija("Dojran",1,10,7,12.5,7);
  249. niza[1]=Ekskurzija("Gevgelija",1,11,5,10,7);
  250. niza[2]=Ekskurzija("Bitola",0,12,6,13.4,7);
  251. niza[3]=Ekskurzija("Skopje",0,12,10,18,10);
  252. TuristickaAgencija dt("DexterTravel",niza,4);
  253. cout<<dt;
  254. dt.najgolemProfit();
  255. cout<<"== Kolku patnici proshle:"<<dt.kolkuPatnici()<<" =="<<endl;
  256. cout<<"== Kolku patnici patuvale poveke od edna nedela:"<<dt.kolkuPatniciNedela()<<" =="<<endl;
  257. cout<<"== Prosecna cena na site ekskurzii:"<<dt.prosek()<<" =="<<endl;
  258.  
  259. return 0;
  260.  
  261. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement