Advertisement
nankovmkd

labs-Sasko

Mar 25th, 2019
472
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 46.69 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. class Automobile{
  6. private:
  7. char *marka; // din al.
  8. int *reg; // din al.
  9. int maxBrzina;
  10.  
  11. public:
  12. Automobile(){} // default konstruktor
  13. Automobile(char *m, int *reg, int mb) // konstruktor so argumenti
  14. {
  15. marka = new char [strlen(m)+1];
  16. strcpy(marka,m);
  17. this->reg = new int [5];
  18. for(int i=0;i<5;i++)
  19. this->reg[i]=reg[i];
  20. maxBrzina=mb;
  21. }
  22. Automobile (const Automobile &a) // copy konstruktor
  23. {
  24. marka = new char [strlen(a.marka)+1];
  25. strcpy(marka,a.marka);
  26. reg = new int [5];
  27. for(int i=0;i<5;i++)
  28. reg[i]=a.reg[i];
  29. maxBrzina=a.maxBrzina;
  30. }
  31. Automobile& operator= (const Automobile &a) // preoptovaruvanje na =
  32. {
  33. if(this!=&a)
  34. {
  35. delete [] marka;
  36. delete [] reg;
  37. marka = new char [strlen(a.marka)+1];
  38. strcpy(marka,a.marka);
  39. reg = new int [5];
  40. for(int i=0;i<5;i++)
  41. reg[i]=a.reg[i];
  42. maxBrzina=a.maxBrzina;
  43. }
  44. return *this;
  45. }
  46.  
  47. ~Automobile(){delete [] marka; delete [] reg;}
  48.  
  49. int getMaxB()
  50. {return maxBrzina;}
  51.  
  52. bool operator== (const Automobile &a) {
  53. for(int i = 0; i < 5; ++i) {
  54. if(reg[i] != a.reg[i])
  55. return false;
  56. return true;
  57. }
  58. }
  59. //operator za pecatenje
  60. friend ostream& operator<< (ostream &out, const Automobile &a) {
  61. return out << "Marka\t" << a.marka << "\tRegistracija[ " << a.reg[0] << " " << a.reg[1] << " " << a.reg[2] << " " << a.reg[3] << " " << a.reg[4] << " ]";
  62. }
  63. };
  64.  
  65.  
  66. class RentACar{
  67. private:
  68. char ime[100];
  69. Automobile *niza;
  70. int broj;
  71.  
  72. public:
  73. // default
  74. RentACar(){}
  75.  
  76. // konstruktor so argumenti
  77. RentACar(char* ime=" ", Automobile *niza=NULL, int br=0)
  78. {
  79. strcpy(this->ime,ime);
  80. for(int i=0;i<br;i++)
  81. this->niza[i]=niza[i];
  82. broj=br;
  83. }
  84.  
  85. // so eden argument
  86. RentACar(const char *ime)
  87. {
  88. strcpy(this->ime, ime);
  89. niza=NULL;
  90. broj=0;
  91. }
  92.  
  93. // copy
  94. RentACar(const RentACar &a)
  95. {
  96. strcpy(ime,a.ime);
  97. for(int i=0;i<a.broj;i++)
  98. niza[i]=a.niza[i];
  99. broj=a.broj;
  100. }
  101.  
  102. // preoptovaruvanje na =
  103. RentACar& operator= (const RentACar &a)
  104. {
  105. if(this!=&a){
  106. delete [] niza;
  107. strcpy(ime,a.ime);
  108. for(int i=0;i<a.broj;i++)
  109. niza[i]=a.niza[i];
  110. broj=a.broj;
  111. }
  112. return *this;
  113. }
  114.  
  115. // += za dodavanje nov avtomobil
  116. RentACar& operator+= (const Automobile &a) {
  117. if(broj == 0) {
  118. niza = new Automobile[1];
  119. niza[0] = a;
  120. broj++;
  121. }
  122. else {
  123. Automobile *temp = niza;
  124. niza = new Automobile[broj+1];
  125. for(int i = 0; i < broj; ++i) {
  126. niza[i] = temp[i];
  127. }
  128. delete [] temp;
  129. niza[broj] = a;
  130. broj++;
  131. }
  132. return *this;
  133. }
  134.  
  135. // -= za otstranuvanje
  136. RentACar& operator-= (const Automobile &a) {
  137. Automobile *temp = new Automobile[broj];
  138. int novBroj = 0;
  139. for(int i = 0; i < broj; ++i) {
  140. if(!(niza[i]==a)) {
  141. temp[novBroj] = niza[i];
  142. novBroj++;
  143. }
  144. }
  145. delete [] niza;
  146. niza = temp;
  147. broj = novBroj;
  148. return *this;
  149. }
  150.  
  151. // destruktor
  152. ~RentACar(){delete [] niza;}
  153.  
  154. // f-ja
  155. void pecatiNadBrzina(int maxBrzina) {
  156. for(int i = 0; i < broj; ++i) {
  157. if(niza[i].getMaxB() > maxBrzina) {
  158. cout << niza[i] << endl;
  159. }
  160. }
  161. }
  162.  
  163. };
  164.  
  165. int main()
  166. {
  167. RentACar agencija("FINKI-Car");
  168. int n;
  169. cin>>n;
  170.  
  171. for (int i=0;i<n;i++)
  172. {
  173. char marka[100];
  174. int regisracija[5];
  175. int maximumBrzina;
  176.  
  177. cin>>marka;
  178.  
  179. for (int i=0;i<5;i++)
  180. cin>>regisracija[i];
  181.  
  182. cin>>maximumBrzina;
  183.  
  184. Automobile nov=Automobile(marka,regisracija,maximumBrzina);
  185.  
  186. //dodavanje na avtomobil
  187. agencija+=nov;
  188.  
  189. }
  190. //se cita grehsniot avtmobil, za koj shto avtmobilot so ista registracija treba da se izbrishe
  191. char marka[100];
  192. int regisracija[5];
  193. int maximumBrzina;
  194. cin>>marka;
  195. for (int i=0;i<5;i++)
  196. cin>>regisracija[i];
  197. cin>>maximumBrzina;
  198.  
  199. Automobile greshka=Automobile(marka,regisracija,maximumBrzina);
  200.  
  201. //brishenje na avtomobil
  202. agencija-=greshka;
  203. cout << "FINKI-Car" << endl;
  204. agencija.pecatiNadBrzina(150);
  205.  
  206. return 0;
  207. }
  208.  
  209.  
  210.  
  211.  
  212. Уредување на дом
  213. Во оваа задача е потребно да уредите даден дом со маси. Креирајте класа Masa со следниве
  214. атрибути:
  215. должина (целобројна вредност)
  216. ширина (целобројна вредност)
  217. конструктор со и без параметри и метода pecati().
  218. Креирајте класа Soba која содржи:
  219. маса (објект од класата Маса)
  220. должина на собата (целобројна вредност)
  221. ширина на собата (целобројна вредност)
  222. конструктор со и без параметри и метода pecati() во која се повикува и pecati() за објектот Masa.
  223. Креирајте класа Kukja со атрибути:
  224. соба (објект од класата Soba)
  225. адреса (низа од 50 знаци), и соодветни методи.
  226. конструктор со и без параметри, деструктор и метода pecati() во која се повикува и pecati() за
  227. објектот Soba.
  228. //vasiot kod ovde
  229. #include <iostream>
  230. #include <cstring>
  231. using namespace std;
  232. class Masa{
  233.  private:
  234.  int dolzhina;
  235.  int shirina;
  236.  public:
  237.  Masa(){}
  238.  Masa(int s,int d){
  239.  dolzhina=d; shirina=s;
  240.  }
  241.  void pechatim(){
  242.  cout<<"Masa: "<<shirina<<" "<<dolzhina;
  243.  }
  244. };
  245. class Soba{
  246.  private:
  247.  Masa m;
  248.  int dolzhina;
  249.  int shirina;
  250.  public:
  251.  Soba(){}
  252.  Soba(int s,int d,Masa mas){
  253.  shirina=s; dolzhina=d; m=mas;
  254.  }
  255.  void pechatis(){
  256.  cout<<"Soba: "<<shirina<<" "<<dolzhina<<" "; m.pechatim(); cout<<" ";
  257.  }
  258. };
  259. class Kukja{
  260.  private:
  261.  Soba s;
  262.  char adresa[50];
  263.  public:
  264.  Kukja(){}
  265.  Kukja(Soba sob,char *a){
  266.  strncpy(adresa,a,50);
  267.  s=sob;
  268.  }
  269.  ~Kukja(){}
  270.  void pecati(){
  271.  cout<<"Adresa: "<<adresa<<" "; s.pechatis(); cout<<endl;
  272.  }
  273.  
  274. };
  275. int main(){
  276.  int n;
  277.  cin>>n;
  278.  for(int i=0;i<n;i++){
  279.  int masaSirina,masaDolzina;
  280.  cin>>masaSirina;
  281.  cin>>masaDolzina;
  282.  Masa m(masaSirina,masaDolzina);
  283.  int sobaSirina,sobaDolzina;
  284.  cin>>sobaSirina;
  285.  cin>>sobaDolzina;
  286.  Soba s(sobaSirina,sobaDolzina,m);
  287.  char adresa[30];
  288.  cin>>adresa;
  289.  Kukja k(s,adresa);
  290.  k.pecati();
  291. }
  292.  
  293.  return 0;
  294. }
  295. Договор
  296. Да се дефинира класа Potpisuvac во која се чуваат информации за:
  297. име (низа од максимум 20 знаци)
  298. презиме (низа од максимум 20 знаци)
  299. ЕМБГ (низа од максимум 14 знаци)
  300. За класата да се дефинира copy конструктор, default конструктор и конструктор со аргументи.
  301. Да се дефинира класа Dogovor, во која се чуваат информации за:
  302. број на договор (int),
  303. категорија на договор (низа од 50 знаци),
  304. поле од 3 потпишувачи на договорот (објекти од класата Potpisuvac) Во класата да се додаде
  305. метод кој ќе проверува дали постојат два исти потпишувачи (имаат ист ЕМБГ).
  306. #include <iostream>
  307. #include <cstring>
  308. using namespace std;
  309. class Potpisuvac
  310. {
  311. //vasiot kod ovde
  312.  private:
  313.  char ime[20];
  314.  char prezime[20];
  315.  char embg[14];
  316.  public:
  317.  Potpisuvac(const Potpisuvac &p){
  318.  strncpy(ime,p.ime,20);
  319.  strncpy(prezime,p.prezime,20);
  320.  strncpy(embg,p.embg,14);
  321.  }
  322.  Potpisuvac(char *i="no name",char *p="no surname",char *e="no embg"){
  323.  strncpy(ime,i,20);
  324.  strncpy(prezime,p,20);
  325.  strncpy(embg,e,14);
  326.  }
  327.  char* getEmbg(){
  328.  return embg;
  329.  }
  330. };
  331. class Dogovor
  332. {
  333.  //vasiot kod ovde
  334.  private:
  335.  int brNaDog;
  336.  char kategorija[50];
  337.  Potpisuvac potpisuvaci[3];
  338.  public:
  339.  Dogovor(){}
  340.  Dogovor(int br,char *k,Potpisuvac *p){
  341.  brNaDog=br;
  342.  strncpy(kategorija,k,50);
  343.  potpisuvaci[0]=p[0];
  344.  potpisuvaci[1]=p[1];
  345.  potpisuvaci[2]=p[2];
  346.  }
  347.  bool proverka(){
  348.  for(int i=0;i<3;i++){
  349.  for(int j=i+1;j<3;j++){
  350.  if(strcmp(potpisuvaci[i].getEmbg(),potpisuvaci[j].getEmbg())==0){
  351.  return true;
  352.  }
  353.  }
  354.  }
  355.  return false;
  356.  }
  357. };
  358. int main()
  359. {
  360.  char embg[13], ime[20], prezime[20], kategorija[20];
  361.  int broj, n;
  362.  cin >> n;
  363.  for(int i = 0; i < n; i++){
  364.  cin >> embg >> ime >> prezime;
  365.  Potpisuvac p1(ime, prezime, embg);
  366.  cin >> embg >> ime >> prezime;
  367.  Potpisuvac p2(ime, prezime, embg);
  368.  cin >> embg >> ime >> prezime;
  369.  Potpisuvac p3(ime, prezime, embg);
  370.  cin >> broj >> kategorija;
  371.  Potpisuvac p[3];
  372.  p[0] = p1; p[1] = p2; p[2] = p3;
  373.  Dogovor d(broj, kategorija, p);
  374.  cout << "Dogovor " << broj << ":" << endl;
  375.  if(d.proverka() == true)
  376.  cout << "Postojat potpishuvaci so ist EMBG" << endl;
  377.  else
  378.  cout << "Ne postojat potpishuvaci so ist EMBG" << endl;
  379.  }
  380.  return 0;
  381. }
  382. Фабрика
  383. Креирајте класа Rabotnik која во себе содржи:
  384. ime (низа од максимум 30 знаци)
  385. prezime (низа од максимум 30 знаци)
  386. plata (целобројна вредност)
  387. За оваа класа да се креираат default конструктор и конструктор со аргументи. Да се
  388. имплементираат и следните методи:
  389. getPlata() која ја враќа платата на работникот
  390. pecati() која ги печати името, презимето и платата.
  391. Креирајте класа Fabrika во која има:
  392. rabotnik [100] (низа од вработени)
  393. brojVraboteni (целобројна вредност)
  394. Во класта имплементирајте ги следните методи:
  395. pecatiVraboteni() ги пречати сите вработени
  396. pecatiSoPlata(int plata) ги печати сите вработени со плата поголема или еднаква на дадената во
  397. аргументот (int plata).
  398. Во главната функција се внесуваат податоци за n вработени. Притоа прво се несува n, па
  399. податоците за сите n вработени. Во последниот ред се чита минималната плата.
  400. На излез да се прикажат прво сите вработени, а потоа само оние со поголема плата од
  401. минималната. Треба да се корисатат методите pecatiVraboteni и pecatiSoPlata!
  402. #include <iostream>
  403. #include <cstring>
  404. using namespace std;
  405. class Rabotnik{
  406.  private:
  407.  
  408.  char ime[30];
  409.  char prezime[30];
  410.  int plata;
  411.  
  412.  public:
  413.  
  414.  Rabotnik(const Rabotnik &r){
  415.  strncpy(ime,r.ime,30);
  416.  strncpy(prezime,r.prezime,30);
  417.  plata=r.plata;
  418.  }
  419.  Rabotnik(char *ime="no name",char*prezime="no surname",int plata=0){
  420.  strncpy(this->ime,ime,30);
  421.  strncpy(this->prezime,prezime,30);
  422.  this->plata=plata;
  423.  }
  424.  int getPlata(){
  425.  return plata;
  426.  }
  427.  void pecati(){
  428.  cout<<ime<<" "<<prezime<<" "<<plata<<endl;
  429.  }
  430.  void setIme(char *ime){
  431.  strncpy(this->ime,ime,30);
  432.  }
  433.  void setPrezime(char *prezime){
  434.  strncpy(this->prezime,prezime,30);
  435.  }
  436.  void setPlata(int plata){
  437.  this->plata=plata;
  438.  }
  439. };
  440. class Fabrika{
  441.  private:
  442.  
  443.  Rabotnik rabotnik[100];
  444.  int brojVraboteni;
  445.  
  446.  public:
  447.  Fabrika(){}
  448.  Fabrika(int n,Rabotnik *r){
  449.  for(int i=0;i<n;i++){
  450.  rabotnik[i]=r[i];
  451.  }
  452.  brojVraboteni=n;
  453.  }
  454.  
  455.  void pecatiVraboteni(){
  456.  for(int i=0;i<brojVraboteni;i++){
  457.  rabotnik[i].pecati();
  458.  }
  459.  }
  460.  void pecatiSoPlata(int min){
  461.  for(int i=0;i<brojVraboteni;i++){
  462.  if(rabotnik[i].getPlata()>=min){
  463.  rabotnik[i].pecati();
  464.  }
  465.  }
  466.  }
  467. };
  468. int main(){
  469.  int n;
  470.  cin>>n;
  471.  Rabotnik rabotnici[100];
  472.  for(int i=0;i<n;i++){
  473.  char ime[30],prezime[30];
  474.  int plata;
  475.  cin>>ime>>prezime>>plata;
  476.  rabotnici[i].setIme(ime);
  477.  rabotnici[i].setPrezime(prezime);
  478.  rabotnici[i].setPlata(plata);
  479.  }
  480.  int minimalna;
  481.  cin>>minimalna;
  482.  Fabrika f(n,rabotnici);
  483.  cout<<"Site vraboteni:"<<endl;
  484.  f.pecatiVraboteni();
  485.  cout<<"Vraboteni so plata povisoka od "<<minimalna<<" :"<<endl;
  486.  f.pecatiSoPlata(minimalna);
  487.  return 0;
  488. }
  489. Паркинг
  490. Да се дефинира класа ParkingPlac во која се чуваат податоци за:
  491. Адреса на плацот (низа од знаци, максимум 20),
  492. Идентификациски број на плацот (динамичка низа од знаци),
  493. Цена за паркирање за 1 час (цел број),
  494. Заработка на паркинг плацот (цел број)
  495. За потребите на класата да се имплементираат :
  496. соодветни конструктори и деструктор, и потребните get-функции (погледнете ги повиците во main
  497. функцијата)
  498. функција pecati() за печатење на податоците за еден паркинг плац во следниот формат:
  499. идентификациски_број адреса - X denari, ако X е заработката на паркинг плацот X не е 0
  500. идентификациски_број адреса , ако X =0
  501. функција platiCasovi(int casovi) која на заработката ја додава платената вредност за дадениот број
  502. на часови.
  503. функција daliIstaAdresa(ParkingPlac p) во која се споредува дали дадениот паркинг плац е на иста
  504. адреса како паркинг плацот p.
  505. Во дадената main функција прво се внесуваат n паркинг плацеви. Потоа се внесуваат m плаќања и
  506. на крај се печатат сите паркинг плацеви од низата кои имаат иста адреса со дадениот паркинг
  507. плац (објектот pCentar).
  508. include<iostream>
  509. //вашиот код
  510. #include<cstring>
  511. using namespace std;
  512. class ParkingPlac{
  513.  private:
  514.  char adress[20];
  515.  char *id;
  516.  int priceph;
  517.  int profit;
  518.  public:
  519.  ParkingPlac(char *adress=" ",char *id=" ",int priceph=0){
  520.  this->priceph = priceph;
  521.  strncpy(this->adress,adress,20);
  522.  this->id = new char[strlen(id)];
  523.  strncpy(this->id,id,strlen(id));
  524.  this->profit=0;
  525.  }
  526.  ParkingPlac(const ParkingPlac &p){
  527.  strncpy(this->adress,p.adress,20);
  528.  this->priceph = p.priceph;
  529.  this->profit = p.profit;
  530.  this->id=new char[strlen(p.id)];
  531.  strncpy(this->id,p.id,strlen(p.id));
  532.  
  533.  }
  534.  ~ParkingPlac(){
  535.  delete [] id;
  536.  }
  537.  ParkingPlac& operator=(const ParkingPlac& p){
  538.  strncpy(adress,p.adress,20);
  539.  strncpy(id,p.id,strlen(p.id));
  540.  profit=p.profit;
  541.  priceph=p.priceph;
  542.  return *this;
  543.  }
  544.  void platiCasovi(int h){
  545.  profit+=h*priceph;
  546.  }
  547.  bool daliIstaAdresa(ParkingPlac p){
  548.  if(strcmp(adress,p.adress)==0) return true;
  549.  else return false;
  550.  }
  551.  char* getId(){
  552.  return id;
  553.  }
  554.  void pecati(){
  555.  cout<<id<<" "<<adress;
  556.  if(profit!=0) cout<<" - "<<profit<<" denari"<<endl;
  557.  }
  558.  
  559. };
  560. int main(){
  561. ParkingPlac p[100];
  562. int n,m;
  563. char adresa[50],id[50];
  564. int brojcasovi,cenacas;
  565. cin>>n;
  566. for (int i=0;i<n;i++){
  567.  cin.get();
  568. cin.getline(adresa,50);
  569. cin>>id>>cenacas;
  570. ParkingPlac edna(adresa,id,cenacas);
  571.  
  572.  //povik na operatorot =
  573.  p[i]=edna;
  574. }
  575.  
  576. //plakjanje
  577. cin>>m;
  578. for (int i=0;i<m;i++){
  579. cin>>id>>brojcasovi;
  580.  
  581.  int findId=false;
  582.  for (int j=0;j<n;j++){
  583.  if (strcmp(p[j].getId(),id)==0){
  584.  p[j].platiCasovi(brojcasovi);
  585.  findId=true;
  586.  }
  587.  }
  588. if (!findId)
  589.  cout<<"Ne e platen parking. Greshen ID."<<endl;
  590. }
  591.  cout<<"========="<<endl;
  592.  ParkingPlac pCentar("Cvetan Dimov","C10",80);
  593. for (int i=0;i<n;i++)
  594.  if (p[i].daliIstaAdresa(pCentar))
  595.  p[i].pecati();
  596. }
  597. DVD
  598. Да се дефинира класата Film во која се чуваат информации за:
  599. име на филмот (динамички алоцирано поле од знаци)
  600. мемориската зафатнина на филмот изразена во MB
  601. жанр на филмот кој може да биде: акција, комедија или драма (енумерација zanr)
  602. Да се обезбедат сите потребни методи за класата за правилно функционирање на програмата.
  603. Дополнително за оваа класа да се дефинира функцијата:
  604. pecati() - функција во која ќе се печатат одделени со цртичка(-): мемориска зафатнина на филмот
  605. со постфикс MB и името на филмот во наводници.
  606. Да се креира класата DVD во која се чуваат информации за :
  607. низа од филмови снимени на DVD-то (Поле од најмногу 5 објекти од класата Film )
  608. број на филмови снимени на DVD-то
  609. меморискиот капацитет на DVD-то (во MB)
  610. Да се обезбедат сите потребни методи за класата за правилно функционирање на програмата.
  611. Дополнително за оваа класа да се дефинираат методите:
  612. dodadiFilm (Film f) - со кој се додава филмот f на DVDто, но само ако има доволно преостанато
  613. место (земајќи го предвид меморискиот капацитет на DVD-то и мемориската зафатнина на
  614. снимените филмови) и притоа да има помалку од 5 филмови на DVD-то.
  615. pecatiFilmoviDrugZanr(zanr z) – со кој се печатат информациите за сите филмови кои НЕ се од
  616. жанрот zanr (акција, комедија или драма).
  617. #include <iostream>
  618. #include <cstring>
  619. using namespace std;
  620. enum zanr{action,comedy,drama};
  621. class Film{
  622.  
  623.  private:
  624.  
  625.  char *name = new char [50];
  626.  int size;
  627.  zanr genre;
  628.  
  629.  public:
  630.  
  631.  Film(char *name=" ",int size=0, zanr genre=zanr(0)){
  632.  strncpy(this->name,name,50);
  633.  this->size=size;
  634.  this->genre=genre;
  635.  }
  636.  
  637.  Film(const Film &f){
  638.  strncpy(name,f.name,50);
  639.  size=f.size;
  640.  genre=f.genre;
  641.  }
  642.  
  643.  Film& operator=(const Film &f){
  644.  strncpy(this->name,f.name,50);
  645.  this->size=f.size;
  646.  this->genre=f.genre;
  647.  return *this;
  648.  }
  649.  
  650.  ~Film(){
  651.  delete [] name;
  652.  }
  653.  
  654.  void pecati(){
  655.  cout<<size<<"MB"<<"-\""<<name<<"\"";
  656.  cout<<endl;
  657.  }
  658.  
  659.  int getSize(){
  660.  return size;
  661.  }
  662.  
  663.  zanr getZanr(){
  664.  return genre;
  665.  }
  666. };
  667. class DVD{
  668.  
  669.  private:
  670.  
  671.  Film f[5];
  672.  int num;
  673.  int capacity;
  674.  
  675.  public:
  676.  
  677.  DVD(){}
  678.  
  679.  DVD(Film *f,int num,int capacity){
  680.  this->num=num;
  681.  this->capacity=capacity;
  682.  for(int i=0;i<5;i++){
  683.  this->f[i]=f[i];
  684.  }
  685.  }
  686.  
  687.  DVD(const DVD &d){
  688.  for(int i=0;i<5;i++){
  689.  f[i]=d.f[i];
  690.  }
  691.  num=d.num;
  692.  capacity=d.capacity;
  693.  }
  694.  
  695.  void dodadiFilm(Film f){
  696.  if(num<5){
  697.  if(capacity>=f.getSize()){
  698.  this->f[num]=f;
  699.  ++num;
  700.  capacity-=f.getSize();
  701.  }
  702.  }
  703.  
  704.  }
  705.  
  706.  DVD(int capacity){
  707.  this->capacity=capacity;
  708.  num=0;
  709.  }
  710.  
  711.  void pecatiFilmoviDrugZanr(zanr z){
  712.  for(int i=0;i<num;i++){
  713.  if(z!=f[i].getZanr()){
  714.  f[i].pecati();
  715.  }
  716.  }
  717.  }
  718.  
  719.  Film getFilm(int i){
  720.  return f[i];
  721.  }
  722.  
  723.  int getBroj(){
  724.  return num;
  725.  }
  726.  
  727. };
  728. int main() {
  729.  // se testira zadacata modularno
  730.  int testCase;
  731.  cin >> testCase;
  732.  int n, memorija, kojzanr;
  733.  char ime[50];
  734.  if(testCase == 1) {
  735.  cout << "===== Testiranje na klasata Film ======" << endl;
  736.  cin >> ime;
  737.  cin >> memorija;
  738.  cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  739.  Film f(ime,memorija,(zanr)kojzanr);
  740.  f.pecati();
  741.  } else if(testCase == 2) {
  742.  cout << "===== Testiranje na klasata DVD ======" << endl;
  743.  DVD omileno(50);
  744.  cin>>n;
  745.  for (int i=0; i<n; i++) {
  746.  cin >> ime;
  747.  cin >> memorija;
  748.  cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  749.  Film f(ime,memorija,(zanr)kojzanr);
  750.  omileno.dodadiFilm(f);
  751.  }
  752.  for (int i=0; i<n; i++)
  753.  (omileno.getFilm(i)).pecati();
  754.  } else if(testCase == 3) {
  755.  cout << "===== Testiranje na metodot dodadiFilm() od klasata DVD ======" << endl;
  756.  DVD omileno(50);
  757.  cin>>n;
  758.  for (int i=0; i<n; i++) {
  759.  cin >> ime;
  760.  cin >> memorija;
  761.  cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  762.  Film f(ime,memorija,(zanr)kojzanr);
  763.  omileno.dodadiFilm(f);
  764.  }
  765.  for (int i=0; i<omileno.getBroj(); i++)
  766.  (omileno.getFilm(i)).pecati();
  767.  } else if(testCase == 4) {
  768.  cout << "===== Testiranje na metodot pecatiFilmoviDrugZanr() od klasata DVD ======" << endl;
  769.  DVD omileno(50);
  770.  cin>>n;
  771.  for (int i=0; i<n; i++) {
  772.  cin >> ime;
  773.  cin >> memorija;
  774.  cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  775.  Film f(ime,memorija,(zanr)kojzanr);
  776.  omileno.dodadiFilm(f);
  777.  }
  778.  cin>>kojzanr;
  779.  omileno.pecatiFilmoviDrugZanr((zanr)kojzanr);
  780.  } else if(testCase == 5) {
  781.  cout << "===== Testiranje na metodot pecatiFilmoviDrugZanr() od klasata DVD ======" << endl;
  782.  DVD omileno(50);
  783.  cin>>n;
  784.  for (int i=0; i<n; i++) {
  785.  cin >> ime;
  786.  cin >> memorija;
  787.  cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  788.  Film f(ime,memorija,(zanr)kojzanr);
  789.  omileno.dodadiFilm(f);
  790.  }
  791.  cin>>kojzanr;
  792.  omileno.pecatiFilmoviDrugZanr((zanr)kojzanr);
  793.  }
  794.  return 0;
  795. }
  796. Пицерија
  797. Да се дефинира класа Пица за која ќе се чуваат податоци за:
  798. име на пицата (низа од 15 знаци)
  799. цена (цел број)
  800. состојки (динамички алоцирана низа од знаци)
  801. намалување на цената во проценти (цел број) - ако пицата не е на промоција намалувањето има
  802. вредност нула, во спротивно, вредност поголема од нула и не поголема од 100.
  803. За потребите на оваа класа да се креираат потребните конструктори и да се напише соодветен
  804. деструктор. Дополнително за оваа класа да се дефинира функцијата:
  805. pecati() - функција во која ќе се печатат податоците за пицата во следниот формат: име - состојки,
  806. цена.
  807. istiSe(Pica p) - функција за споредба на две пици според состојките :
  808. Да се дефинира класа Picerija во која се чуваат (5 поени):
  809. име (низа од максимум 15 знаци)
  810. динмички алоцирана низа од објекти од класата Pica
  811. број на пици (цел број)
  812. За потребите на оваа класа да се дефинираат потребните конструктори и да се напише соодветен
  813. деструктор. Да се имплементираат и следниве методи:
  814. dodadi (Pica P) - за додавање нова пица во пицеријата, но само ако не постои иста во низата (нема
  815. пица со исти состојки со пицата што треба да се додаде).
  816. void piciNaPromocija() - се печатат сите пици од пицеријата што се на промоција во формат : име -
  817. состојки, цена, цена со попуст.
  818. #include <iostream>
  819. #include <cstring>
  820. using namespace std;
  821. //Vasiot kod tuka
  822. class Pica
  823. {
  824. private:
  825.  char name[15];
  826.  char *ing;
  827.  int price, dis;
  828. public:
  829.  Pica(const char *name="", const int price=0, const char *ing="", const int dis=0)
  830.  {
  831.  strcpy(this->name, name);
  832.  this->price=price;
  833.  this->ing=new char[strlen(ing)+1];
  834.  strcpy(this->ing, ing);
  835.  this->dis=dis;
  836.  }
  837.  Pica(const Pica &p)
  838.  {
  839.  strcpy(name, p.name);
  840.  price=p.price;
  841.  ing=new char[strlen(p.ing)+1];
  842.  strcpy(ing, p.ing);
  843.  dis=p.dis;
  844.  }
  845.  Pica &operator=(const Pica &p)
  846.  {
  847.  if(this!=&p)
  848.  {
  849.  strcpy(name, p.name);
  850.  price=p.price;
  851.  delete [] ing;
  852.  ing=new char[strlen(p.ing)+1];
  853.  strcpy(ing, p.ing);
  854.  dis=p.dis;
  855.  }
  856.  return *this;
  857.  }
  858.  ~Pica()
  859.  {
  860.  delete [] ing;
  861.  }
  862.  void pecati()
  863.  {
  864.  cout<<name<<" - "<<ing<<", "<<price;
  865.  }
  866.  bool istiSe(Pica p)
  867.  {
  868.  return strcmp(ing, p.ing)==0;
  869.  }
  870.  const int getPrice() {return price;}
  871.  const int getDis() {return dis;}
  872. };
  873. class Picerija
  874. {
  875. private:
  876.  char name[15];
  877.  Pica *pc;
  878.  int countP;
  879. public:
  880.  Picerija(const char *name)
  881.  {
  882.  strcpy(this->name, name);
  883.  countP=0;
  884.  }
  885.  Picerija(const Picerija &p)
  886.  {
  887.  strcpy(name, p.name);
  888.  countP=p.countP;
  889.  pc=new Pica[countP];
  890.  for(int i=0; i<countP; i++)
  891.  {
  892.  pc[i]=p.pc[i];
  893.  }
  894.  }
  895.  Picerija &operator=(const Picerija &p)
  896.  {
  897.  if(this!=&p)
  898.  {
  899.  strcpy(name, p.name);
  900.  countP=p.countP;
  901.  delete [] pc;
  902.  pc=new Pica[countP];
  903.  for(int i=0; i<countP; i++)
  904.  {
  905.  pc[i]=p.pc[i];
  906.  }
  907.  }
  908.  return *this;
  909.  }
  910.  ~Picerija()
  911.  {
  912.  delete [] pc;
  913.  }
  914.  void dodadi(Pica p)
  915.  {
  916.  bool notSame=true;
  917.  for(int i=0; i<countP; i++)
  918.  {
  919.  if(pc[i].istiSe(p))
  920.  {
  921.  notSame=false;
  922.  break;
  923.  }
  924.  }
  925.  if(notSame)
  926.  {
  927.  Pica *tmp=new Pica[countP+1];
  928.  for(int i=0; i<countP; i++)
  929.  {
  930.  tmp[i]=pc[i];
  931.  }
  932.  if(countP>0)
  933.  delete [] pc;
  934.  pc=tmp;
  935.  pc[countP++]=p;
  936.  }
  937.  }
  938.  void setIme(const char *name) {strcpy(this->name, name);}
  939.  const char *getIme() {return name;}
  940.  void piciNaPromocija()
  941.  {
  942.  for(int i=0; i<countP; i++)
  943.  {
  944.  if(pc[i].getDis())
  945.  {
  946.  pc[i].pecati();
  947.  cout<<" "<<pc[i].getPrice()-(pc[i].getPrice()*pc[i].getDis())/100<<endl;
  948.  }
  949.  }
  950.  }
  951. };
  952. int main () {
  953.  int n;
  954.  char ime[15];
  955.  cin >> ime;
  956.  cin >> n;
  957.  Picerija p1(ime);
  958.  for(int i = 0; i < n; i++){
  959.  char imp[100];
  960.  cin.get();
  961.  cin.getline(imp,100);
  962.  int cena;
  963.  cin >> cena;
  964.  char sostojki[100];
  965.  cin.get();
  966.  cin.getline(sostojki,100);
  967.  int popust;
  968.  cin >> popust;
  969.  Pica p(imp,cena,sostojki,popust);
  970.  p1.dodadi(p);
  971.  }
  972.  Picerija p2 = p1;
  973.  cin >> ime;
  974.  p2.setIme(ime);
  975.  char imp[100];
  976.  cin.get();
  977.  cin.getline(imp,100);
  978.  int cena;
  979.  cin >> cena;
  980.  char sostojki[100];
  981.  cin.get();
  982.  cin.getline(sostojki,100);
  983.  int popust;
  984.  cin >> popust;
  985.  Pica p(imp,cena,sostojki,popust);
  986.  p2.dodadi(p);
  987.  cout<<p1.getIme()<<endl;
  988.  cout<<"Pici na promocija:"<<endl;
  989.  p1.piciNaPromocija();
  990.  cout<<p2.getIme()<<endl;
  991.  cout<<"Pici na promocija:"<<endl;
  992.  p2.piciNaPromocija();
  993. return 0;
  994. }
  995. Матрица
  996. Да се напише класа за матрица. Во класата се чуваат елементите од матрицата од тип float
  997. (матрица со максимална димензија [10]x[10]) и големината на матрицата (број на редици и
  998. колони). За оваа класа да се преоптоварат следните оператори:
  999. оператор + за собирање матрица со број
  1000. оператор - за одземање на матрици
  1001. оператор * за множење на матрици
  1002. операторот >> за внесување на елементите на матрицата
  1003. операторот << за печатење на елементите на матрицата
  1004. Во главната функција да се креираат објекти A, B и C со подразбирливиот конструктор на класата
  1005. Matrica. Од стандарден влез да се прочитаат нивните вредности. Да се отпечати вредноста на
  1006. изразот A-(B*C)+2 на стандарден излез.
  1007. Да се претпостави дека секогаш матриците ќе бидат квадратни со ист број на редици и колони.
  1008. //vashiot kod ovde
  1009. #include <iostream>
  1010. #include <cstring>
  1011. using namespace std;
  1012. class Matrica{
  1013.  
  1014. private:
  1015.  
  1016.  float matrix[10][10];
  1017.  int rows;
  1018.  int columns;
  1019.  
  1020. public:
  1021.  
  1022.  Matrica(){}
  1023.  
  1024.  Matrica(int rows,int columns){
  1025.  this->rows=rows;
  1026.  this->columns=columns;
  1027.  for(int i=0;i<rows;i++){
  1028.  for(int j=0;j<columns;j++){
  1029.  this->matrix[i][j]=0;
  1030.  }
  1031.  }
  1032.  
  1033.  }
  1034.  
  1035.  friend istream& operator>>(istream &input,Matrica &m){
  1036.  input>>m.rows>>m.columns;
  1037.  for(int i=0;i<m.rows;i++){
  1038.  for(int j=0;j<m.columns;j++){
  1039.  input>>m.matrix[i][j];
  1040.  }
  1041.  }
  1042.  return input;
  1043.  }
  1044.  
  1045.  friend ostream& operator<<(ostream &output,Matrica &m){
  1046.  for(int i=0;i<m.rows;i++){
  1047.  for(int j=0;j<m.columns;j++){
  1048.  output<<m.matrix[i][j]<<" ";
  1049.  }
  1050.  output<<endl;
  1051.  }
  1052.  return output;
  1053.  }
  1054.  
  1055.  Matrica& operator+(int a){
  1056.  for(int i=0;i<rows;i++){
  1057.  for(int j=0;j<columns;j++){
  1058.  matrix[i][j]+=a;
  1059.  }
  1060.  }
  1061.  return *this;
  1062.  }
  1063.  
  1064.  Matrica& operator-(Matrica &b){
  1065.  for(int i=0;i<rows;i++){
  1066.  for(int j=0;j<columns;j++){
  1067.  this->matrix[i][j]-=b.matrix[i][j];
  1068.  }
  1069.  }
  1070.  return *this;
  1071.  }
  1072.  
  1073.  Matrica operator*(Matrica &b){
  1074.  Matrica newmatrica(this->rows,this->columns);
  1075.  for(int i=0;i<rows;i++){
  1076.  for(int j=0;j<columns;j++){
  1077.  for(int k=0;k<columns;k++){
  1078.  newmatrica.matrix[i][j]+=this->matrix[i][k]*b.matrix[k][j];
  1079.  }
  1080.  }
  1081.  }
  1082.  return newmatrica;
  1083.  }
  1084.  
  1085. };
  1086. int main()
  1087. {
  1088.  Matrica A,B,C;
  1089.  cin>>A>>B>>C;
  1090.  Matrica D=B*C;
  1091.  Matrica R=A-D+2;
  1092.  cout<<R;
  1093. }
  1094. Планинарско друштво
  1095. Да се креира класа за претставување на планинарско друштво во која ќе се чуваат информации за
  1096. името на друштвото (динамички алоцирана низа од знаци), број на поминати тури (цел број) и
  1097. број на членови во планинарското друштво (цел број). За оваа класа да се напише:
  1098. оператор + за собирање на две друштва што како резултат враќа друштво со број на членови
  1099. еднаков на збирот од членовите од двете друштва, а останатите атрибути на резултантното
  1100. друштво ги добиваат вредностите на соодветните атрибути од друштвото со поголем број на
  1101. членови
  1102. оператори >, < за споредба во однос на бројот на членови во планинарските друштва
  1103. оператор << за печатење на информациите за планинарското друштво
  1104. Да се напише функција што на влез прима низа од планинарски друштва и вкупен број на друштва
  1105. во низата и го печати планинарското друштво што има најголем број на членови .
  1106. #include <iostream>
  1107. #include <string.h>
  1108. using namespace std;
  1109. class PlDrustvo{
  1110.  
  1111. private:
  1112.  
  1113.  char *ime;
  1114.  int brojTuri;
  1115.  int clenovi;
  1116.  
  1117. public:
  1118.  
  1119.  PlDrustvo(){
  1120.  ime=NULL;
  1121.  brojTuri=0;
  1122.  clenovi=0;
  1123.  }
  1124.  
  1125.  
  1126.  PlDrustvo(char *ime,int brojTuri,int clenovi){
  1127.  this->ime=new char [strlen(ime)+1];
  1128.  strcpy(this->ime,ime);
  1129.  this->brojTuri=brojTuri;
  1130.  this->clenovi=clenovi;
  1131.  }
  1132.  
  1133.  PlDrustvo(const PlDrustvo& p){
  1134.  this->ime=new char [strlen(p.ime)+1];
  1135.  strncpy(this->ime,p.ime,strlen(p.ime)+1);
  1136.  this->brojTuri=p.brojTuri;
  1137.  this->clenovi=p.clenovi;
  1138.  }
  1139.  
  1140.  PlDrustvo& operator=(const PlDrustvo &p){
  1141.  if(this!=&p){
  1142.  delete [] this->ime;
  1143.  this->ime=new char [strlen(p.ime)+1];
  1144.  strcpy(this->ime,p.ime);
  1145.  this->brojTuri=p.brojTuri;
  1146.  this->clenovi=p.clenovi;
  1147.  }
  1148.  return *this;
  1149.  }
  1150.  
  1151.  PlDrustvo operator+(const PlDrustvo &p){
  1152.  PlDrustvo p1;
  1153.  if(*this>p){
  1154.  delete [] p1.ime;
  1155.  p1.ime=new char [strlen(this->ime)+1];
  1156.  strncpy(p1.ime,this->ime,strlen(this->ime)+1);
  1157.  p1.brojTuri=this->brojTuri;
  1158.  p1.clenovi=this->clenovi+p.clenovi;
  1159.  } else {
  1160.  delete [] p1.ime;
  1161.  p1.ime=new char [strlen(p.ime)+1];
  1162.  strncpy(p1.ime,p.ime,strlen(p.ime)+1);
  1163.  p1.brojTuri=p.brojTuri;
  1164.  p1.clenovi=this->clenovi+p.clenovi;
  1165.  }
  1166.  return p1;
  1167.  }
  1168.  
  1169.  ~PlDrustvo(){
  1170.  delete [] ime;
  1171.  }
  1172.  
  1173.  friend ostream& operator<<( ostream& output,PlDrustvo &p){
  1174.  output<<"Ime: "<<p.ime<<" Turi: "<<p.brojTuri<<" Clenovi: "<<p.clenovi<<endl;
  1175.  return output;
  1176.  }
  1177.  
  1178.  bool operator<(const PlDrustvo& p){
  1179.  return this->clenovi<p.clenovi;
  1180.  }
  1181.  
  1182.  bool operator>(const PlDrustvo& p){
  1183.  return this->clenovi>p.clenovi;
  1184.  }
  1185.  
  1186.  
  1187. };
  1188. void najmnoguClenovi(PlDrustvo* drustva,int n){
  1189.  PlDrustvo max=drustva[0];
  1190.  for(int i=1;i<n;i++){
  1191.  if(drustva[i]>max){
  1192.  max=drustva[i];
  1193.  }
  1194.  }
  1195.  cout<<"Najmnogu clenovi ima planinarskoto drustvo: "<<max;
  1196. }
  1197. int main()
  1198. {
  1199.  PlDrustvo drustva[3];
  1200.  PlDrustvo pl;
  1201.  
  1202.  for (int i=0;i<3;i++)
  1203.  {
  1204.  char ime[100];
  1205.  int brTuri;
  1206.  int brClenovi;
  1207.  cin>>ime;
  1208.  cin>>brTuri;
  1209.  cin>>brClenovi;
  1210.  
  1211.  PlDrustvo p(ime,brTuri,brClenovi);
  1212.  
  1213.  drustva[i] = p;
  1214.  }
  1215.  
  1216.  pl = (drustva[0] + drustva[1]);
  1217.  
  1218.  cout<<pl;
  1219.  
  1220.  
  1221.  najmnoguClenovi(drustva, 3);
  1222.  
  1223.  return 0;
  1224. }
  1225. Автомобил
  1226. Да се напише класа Automobile во која се чуваат информации за марката на автомобилот
  1227. (динамички алоцирана низа од знаци), регистрација (динамички алоцирана низа од 5 цели броја)
  1228. и максимална брзина (цел број). За класата да се обезбедат set и get методите што се користат и
  1229. да се преоптоварат следните оператори:
  1230. оператор == за споредување на два автомобила според регистрацијата
  1231. оператор << за печатење на податоци на автомобил во формат Marka:име Registracija:[x y z k l]
  1232. Да се напише класа RentACar за агенција за измајмување возила во која се чуваат информација за
  1233. името на агенцијата (низа од 100 знци), низа од автомобили (динамички алоациана низа од
  1234. објекти од класата Automobile) и број на автомобили со кој располага (цел број). Во класата
  1235. RentACar да се напише конструктор со еден аргумент за иницијализација на името на агенцијата.
  1236. При секое додавање на нов автомобил, динамички алоцираната низа да го зголемува капацитетот
  1237. за 1 елемент. Во оваа класа да се преоптоварат операторите:
  1238. += за додавање на нов автомобил во агенцијата и
  1239. -= за отстранување на даден автомобил од агенцијата (оној со иста регистрација).
  1240. Да се напише main функција во која се инстанцира објект од класата RentACar. Во овој објект да се
  1241. додадат сите автомобили чии информации се читаат од тастатура со операторот +=. Меѓутоа,
  1242. откриено е дека во внесувањето на податоците има грешка затоа што при обид да се додаде нов
  1243. автомобил во агенцијата, увидено е дека таа регистрација веќе постои. Во последниот ред од
  1244. влезот дадени се инфромации тој автомобил. Потребно е да се избрише автомобилот што
  1245. претходно е погрешно внесен и да се додаде новиот.
  1246. На излез да се отпечатат името на агенцијата и листа на автомобили што таа ги изнајмува, а чија
  1247. максимална брзина е поголема од 150. Последново да се направи со функција
  1248. _pecatiNadBrzina(int max)_ што треба да се дефинира во класата RentACar.
  1249. #include<iostream>
  1250. #include<cstring>
  1251. using namespace std;
  1252. class Automobile
  1253. {
  1254. private:
  1255.  char *marka;
  1256.  int *registracija;
  1257.  int maks_brzina;
  1258. public:
  1259.  Automobile(const char *m="", const int *reg=0, int maksb=0)
  1260.  {
  1261.  marka = new char[strlen(m)+1];
  1262.  strcpy(marka,m);
  1263.  registracija = new int[5];
  1264.  if(reg==0)
  1265.  {
  1266.  for(int i=0;i<5;i++)
  1267.  {
  1268.  registracija[i]=0;
  1269.  }
  1270.  }
  1271.  else
  1272.  {
  1273.  for(int i=0;i<5;i++)
  1274.  {
  1275.  registracija[i]=reg[i];
  1276.  }
  1277.  }
  1278.  maks_brzina=maksb;
  1279.  }
  1280.  Automobile(const Automobile &a)
  1281.  {
  1282.  marka = new char[strlen(a.marka)+1];
  1283.  strcpy(marka,a.marka);
  1284.  registracija = new int[5];
  1285.  for(int i=0;i<5;i++)
  1286.  {
  1287.  registracija[i]=a.registracija[i];
  1288.  }
  1289.  maks_brzina=a.maks_brzina;
  1290.  }
  1291.  Automobile &operator =(const Automobile &a)
  1292.  {
  1293.  if(this==&a)return *this;
  1294.  delete [] marka;
  1295.  marka = new char[strlen(a.marka)+1];
  1296.  strcpy(marka,a.marka);
  1297.  registracija = new int[5];
  1298.  for(int i=0;i<5;i++)
  1299.  {
  1300.  registracija[i]=a.registracija[i];
  1301.  }
  1302.  maks_brzina=a.maks_brzina;
  1303.  return *this;
  1304.  }
  1305.  ~Automobile(){delete [] marka; delete [] registracija;}
  1306.  bool operator ==(const Automobile &a)
  1307.  {
  1308.  bool flag=true;
  1309.  for(int i=0;i<5;i++)
  1310.  {
  1311.  if(registracija[i]!=a.registracija[i])
  1312.  flag=false;
  1313.  }
  1314.  return flag;
  1315.  }
  1316.  friend ostream &operator <<(ostream &out, const Automobile &a)
  1317.  {
  1318.  out<<"Marka\t";
  1319.  out<<a.marka<<""<<"\tRegistracija[ ";
  1320.  for(int i=0;i<5;i++)
  1321.  {
  1322.  out<<a.registracija[i]<<" ";
  1323.  }
  1324.  out<<"]"<<endl;
  1325.  }
  1326.  int get_brzina()
  1327.  {
  1328.  return maks_brzina;
  1329.  }
  1330. };
  1331. class RentACar
  1332.  {
  1333.  private:
  1334.  char ime[100];
  1335.  Automobile *av;
  1336.  int broj_alto;
  1337.  public:
  1338.  RentACar(const char *im="", const Automobile *avt=0, int br_al=0)
  1339.  {
  1340.  av = new Automobile[br_al];
  1341.  strcpy(ime,im);
  1342.  for(int i=0;i<br_al;i++)
  1343.  {
  1344.  av[i] = avt[i];
  1345.  }
  1346.  broj_alto=br_al;
  1347.  }
  1348.  RentACar (const RentACar &rc)
  1349.  {
  1350.  strcpy(ime,rc.ime);
  1351.  av = new Automobile[rc.broj_alto];
  1352.  for(int i=0;i<rc.broj_alto;i++)
  1353.  {
  1354.  av[i] = rc.av[i];
  1355.  }
  1356.  broj_alto=rc.broj_alto;
  1357.  }
  1358.  RentACar &operator +=(const Automobile &a)
  1359.  {
  1360.  Automobile *temp;
  1361.  temp = new Automobile [broj_alto+1];
  1362.  for(int i=0;i<broj_alto;i++)
  1363.  {
  1364.  temp[i] = av[i];
  1365.  }
  1366.  temp[broj_alto]=a;
  1367.  delete [] av;
  1368.  av=temp;
  1369.  broj_alto++;
  1370.  return *this;
  1371.  }
  1372.  RentACar &operator -=(const Automobile &a)
  1373.  {
  1374.  Automobile *temp;
  1375.  int brojac=0;
  1376.  for(int i=0;i<broj_alto;i++)
  1377.  {
  1378.  if(av[i]==a)brojac++;
  1379.  }
  1380.  temp = new Automobile[broj_alto-brojac];
  1381.  int b=0;
  1382.  for(int i=0;i<broj_alto;i++)
  1383.  {
  1384.  if(!(av[i]==a))
  1385.  {
  1386.  temp[b]=av[i];
  1387.  b++;
  1388.  }
  1389.  }
  1390.  delete [] av;
  1391.  av=temp;
  1392.  broj_alto=broj_alto-brojac;
  1393.  return *this;
  1394.  }
  1395.  void pecatiNadBrzina(int maks)
  1396.  {
  1397.  for(int i=0;i<broj_alto;i++)
  1398.  {
  1399.  if(av[i].get_brzina()>maks)
  1400.  cout<<av[i];
  1401.  }
  1402.  }
  1403.  };
  1404. int main()
  1405. {
  1406.  RentACar agencija("FINKI-Car");
  1407.  int n;
  1408.  cin>>n;
  1409. cout<<"FINKI-Car"<<endl;
  1410.  for (int i=0;i<n;i++)
  1411.  {
  1412.  char marka[100];
  1413.  int regisracija[5];
  1414.  int maximumBrzina;
  1415.  cin>>marka;
  1416.  for (int i=0;i<5;i++)
  1417.  cin>>regisracija[i];
  1418.  cin>>maximumBrzina;
  1419.  Automobile nov=Automobile(marka,regisracija,maximumBrzina);
  1420.  //dodavanje na avtomobil
  1421.  agencija+=nov;
  1422.  }
  1423.  //se cita grehsniot avtmobil, za koj shto avtmobilot so ista registracija treba da se izbrishe
  1424.  char marka[100];
  1425.  int regisracija[5];
  1426.  int maximumBrzina;
  1427.  cin>>marka;
  1428.  for (int i=0;i<5;i++)
  1429.  cin>>regisracija[i];
  1430.  cin>>maximumBrzina;
  1431.  Automobile greshka=Automobile(marka,regisracija,maximumBrzina);
  1432.  //brishenje na avtomobil
  1433.  agencija-=greshka;
  1434.  agencija.pecatiNadBrzina(150);
  1435.  return 0;
  1436. }
  1437. Недвижнина
  1438. Да се развие класа Nediviznina за коjа се чуваат следниве информации:
  1439. адреса (динамички алоцирана низа од знаци)
  1440. квадратура (цел боj)
  1441. цена за квадрат (цел боj)
  1442. За оваа класа да се имплементираат соодветните конструктори и следните методи:
  1443. cena() коj ќе jа ваќа цената на недвижнината (квадратура * цена-за-квадрат)
  1444. pecati() коj ќе ги испечати сите информации за истата
  1445. danokNaImot() коj го ваќа данокот што се плаќа за недвижнината, а истиот се пресметува како 5%
  1446. од цената на недвижнината.
  1447. Од оваа класа да се изведе класа Vila за коjа дополнително се чува данок на луксуз (цел боj, пр.
  1448. 10%). За оваа класа да се преоптоварат методите:
  1449. pecati()
  1450. danokNaImot() со тоа што пресметаниот данок се зголемува процентуално за данокот на луксуз.
  1451. И за двете класи треба да се преоптовари operator >>.
  1452. //Vasiot kod ovde....
  1453. #include <iostream>
  1454. #include <cstring>
  1455. using namespace std;
  1456. class Nedviznina{
  1457. protected:
  1458.  char *adresa;
  1459.  int kv,cena;
  1460. public:
  1461.  Nedviznina(){
  1462.  adresa=new char[0];
  1463.  }
  1464.  //copy
  1465.  Nedviznina(const Nedviznina &n){
  1466.  adresa=new char[strlen(n.adresa)+1];
  1467.  strcpy(adresa,n.adresa);
  1468.  kv=n.kv;
  1469.  cena=n.cena;
  1470.  }
  1471.  //operator =
  1472.  Nedviznina& operator=(const Nedviznina &n){
  1473.  if(this!=&n){
  1474.  delete [] adresa;
  1475.  adresa=new char[strlen(n.adresa)+1];
  1476.  strcpy(adresa,n.adresa);
  1477.  kv=n.kv;
  1478.  cena=n.cena;
  1479.  }
  1480.  return *this;
  1481.  }
  1482.  //destructor
  1483.  ~Nedviznina(){
  1484.  delete [] adresa;
  1485.  }
  1486.  //metodi
  1487.  int Cena(){
  1488.  return kv*cena;
  1489.  }
  1490.  void pecati(){
  1491.  cout<<adresa<<", Kvadratura: "<<kv<<", Cena po Kvadrat: "<<cena<<endl;
  1492.  }
  1493.  float danokNaImot(){
  1494.  return (float)kv*cena*5/100;
  1495.  }
  1496.  char *getAdresa(){
  1497.  return adresa;
  1498.  }
  1499.  //operator >>
  1500.  friend istream& operator>>(istream &in,Nedviznina &n){
  1501.  in>>n.adresa;
  1502.  in>>n.kv;
  1503.  in>>n.cena;
  1504.  return in;
  1505.  }
  1506. };
  1507. class Vila:public Nedviznina{
  1508. private:
  1509.  int danok;
  1510. public:
  1511.  Vila(){}
  1512.  //metodi
  1513.  void pecati(){
  1514.  cout<<adresa<<", Kvadratura: "<<kv<<", Cena po Kvadrat: "<<cena<<", Danok na luksuz:
  1515. "<<danok<<endl;
  1516.  }
  1517.  float danokNaImot(){
  1518.  return Nedviznina::Cena()*(5+danok)/100;
  1519.  }
  1520.  //operator >>
  1521.  friend istream& operator>>(istream &in,Vila &v){
  1522.  return in>>v.adresa>>v.kv>>v.cena>>v.danok;
  1523.  }
  1524. };
  1525. int main(){
  1526.  Nedviznina n;
  1527.  Vila v;
  1528.  cin>>n;
  1529.  cin>>v;
  1530.  n.pecati();
  1531.  cout<<"Danok za: "<<n.getAdresa()<<", e: "<<n.danokNaImot()<<endl;
  1532.  v.pecati();
  1533.  cout<<"Danok za: "<<v.getAdresa()<<", e: "<<v.danokNaImot()<<endl;
  1534.  return 0;
  1535. }
  1536. Спортски екипи
  1537. Да се дефинира класа Ekipa за коjа се чуваат следниве информации:
  1538. името на екипата (низа од наjмногу 15 знаци)
  1539. броj на порази
  1540. броj на победи
  1541. За оваа класа да се дефинира метод pecati() коjа ги печати податоците за екипаta. Од оваа класа
  1542. да се изведe новa класa, FudbalskaEkipa.
  1543. За фудбалската екипа дополнително се чуваат информации за:
  1544. вкупниот броj на црвени картони
  1545. вкупниот броj жолти картони
  1546. броjот на нерешени натпревари
  1547. За фудбалската екипа да се преоптовари методот pecati(), така што покрај останатите
  1548. информации, ќе се испечатат и бројот на нерешени резултати и вкупен број на поени во формат:
  1549. Име на екипа, броj на победи, броj на порази, броj на нерешени натпревари и вкупен броj на
  1550. поени (за победа фудбалската екипа добива 3 поени, додека за нерешен резултата, 1 поен);
  1551. //Vasiot kod ovde
  1552. #include <iostream>
  1553. #include <cstring>
  1554. using namespace std;
  1555. class Ekipa{
  1556. protected:
  1557.  char ime[15];
  1558.  int porazi;
  1559.  int pobedi;
  1560. public:
  1561.  Ekipa(char ime[15]="",int pobedi=0,int porazi=0){
  1562.  strcpy(this->ime,ime);
  1563.  this->pobedi=pobedi;
  1564.  this->porazi=porazi;
  1565.  }
  1566.  ~Ekipa(){}
  1567.  void pecati(){
  1568.  cout<<"Ime: "<<ime<<" Pobedi: "<<pobedi<<" Porazi: "<<porazi;
  1569.  }
  1570. };
  1571. class FudbalskaEkipa:public Ekipa{
  1572. private:
  1573.  int crveni;
  1574.  int zolti;
  1575.  int nereseni;
  1576. public:
  1577.  FudbalskaEkipa(char ime[15]="",int pobedi=0,int porazi=0,int crveni=0,int zolti=0,int
  1578. nereseni=0):Ekipa(ime,pobedi,porazi){
  1579.  this->crveni=crveni;
  1580.  this->zolti=zolti;
  1581.  this->nereseni=nereseni;
  1582.  }
  1583.  FudbalskaEkipa(const FudbalskaEkipa &k):Ekipa(ime,pobedi,porazi){
  1584.  crveni=k.crveni;
  1585.  zolti=k.zolti;
  1586.  nereseni=k.nereseni;
  1587.  }
  1588.  ~FudbalskaEkipa(){}
  1589.  void pecati(){
  1590.  int poeni;
  1591.  poeni=(pobedi*3)+(1*nereseni);
  1592.  cout<<"Ime: "<<ime<<" Pobedi: "<<pobedi<<" Porazi: "<<porazi<<" Nereseni: "<<nereseni<<" Poeni:
  1593. "<<poeni<<endl;
  1594.  }
  1595. };
  1596. int main(){
  1597. char ime[15];
  1598. int pob,por,ck,zk,ner;
  1599. cin>>ime>>pob>>por>>ck>>zk>>ner;
  1600. FudbalskaEkipa f1(ime,pob,por,ck,zk,ner);
  1601. f1.pecati();
  1602. return 0;
  1603. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement