nankovmkd

labs_all+1

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