Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 16.12 KB | None | 0 0
  1. Матрица Problem 1 (2 / 2)
  2. Да се напише класа за матрица. Во класата се чуваат елементите од матрицата од тип float (матрица со максимална димензија [10]x[10]) и големината на матрицата (број на редици и колони). За оваа класа да се преоптоварат следните оператори:
  3. • оператор + за собирање на број од матрица
  4. • оператор - за одземање на матрици
  5. • оператор * за множење на матрици
  6. •операторот >> за внесување на елементите на матрицата
  7. •операторот << за печатење на елементите на матрицата
  8.  
  9. Во главната функција да се креираат објекти A, B и C со подразбирливиот конструктор на класата Matrica. Од стандарден влез да се прочитаат нивните вредности. Да се отпечати вредноста на изразот A-(BC)+2** на стандарден излез.
  10.  
  11. Да се претпостави дека секогаш матриците ќе бидат квадратни со ист број на редици и колони.
  12. #include <iostream>
  13. #include <cmath>
  14.  
  15. using namespace std;
  16.  
  17. class Matrica {
  18.    
  19. private:
  20.         int m, n;
  21.         float A[10][10];
  22.    
  23. public:
  24.    
  25.     Matrica(float A[10][10]=0, int m=0, int n=0)
  26.        {
  27.         this->m=m;
  28.         this->n=n;
  29.         for(int i=0; i<this->m; i++)
  30.            {
  31.             for(int j=0; j<this->n; j++)
  32.                {
  33.                 this->A[i][j]=A[i][j];
  34.                }
  35.            }
  36.        }
  37.    
  38.     Matrica &operator+(int broj)
  39.     {
  40.         for(int i=0;i<this->m;i++)
  41.         {
  42.             for(int j=0;j<this->n;j++)
  43.             {
  44.                 this->A[i][j]+=broj;
  45.             }
  46.         }
  47.         return *this;
  48.     }
  49.    
  50.     Matrica &operator+=(const Matrica& p)
  51.     {
  52.         if(this!=&p)
  53.           {
  54.             this->m=p.m;
  55.             this->n=p.n;
  56.             float A[p.m][p.n];
  57.             for(int i=0; i<p.m; i++)
  58.                {
  59.                 for(int j=0; j<p.n; j++)
  60.                    {
  61.                     this->A[i][j]+=p.A[i][j];
  62.                    }
  63.                }
  64.           }
  65.         return *this;
  66.     }
  67.    
  68.     Matrica &operator-(const Matrica& o)
  69.      {
  70.         if(this!=&o)
  71.           {
  72.             this->m=o.m;
  73.             this->n=o.n;
  74.             float A[o.m][o.n];
  75.             for(int i=0; i<o.m; i++)
  76.                {
  77.                 for(int j=0; j<o.n; j++)
  78.                    {
  79.                     this->A[i][j]-=o.A[i][j];
  80.                    }
  81.                }
  82.           }
  83.         return *this;
  84.     }
  85.    
  86.     Matrica &operator*(const Matrica& z)
  87.      {
  88.         if(this!=&z)
  89.           {
  90.             Matrica rezultat;
  91.             rezultat.m=m;
  92.             rezultat.n=z.n;
  93.             float suma;
  94.             for(int i=0; i<m; i++)
  95.                 {
  96.                   for(int j=0; j<z.n; j++)
  97.                       {
  98.                         suma = 0;
  99.                         for(int k=0; k<z.m; k++)
  100.                          {
  101.                            suma+=A[i][k]*z.A[k][j];
  102.                          }
  103.                          rezultat.A[i][j] = suma;
  104.                       }
  105.                  }
  106.            
  107.             for(int i=0; i<m; i++)
  108.                {
  109.                 for(int j=0; j<z.n; j++)
  110.                    {
  111.                      A[i][j] = rezultat.A[i][j];
  112.                    }
  113.                }
  114.           }
  115.         return *this;
  116.     }
  117.    
  118.     friend istream &operator>>(istream& vlez, Matrica &ma)
  119.     {
  120.         cin >> ma.m >> ma.n;
  121.         for(int i=0;i<ma.m;i++)
  122.         {
  123.             for(int j=0;j<ma.n;j++)
  124.             {
  125.                 cin>>ma.A[i][j];
  126.             }
  127.         }
  128.         return vlez;
  129.     }
  130.    
  131.      friend ostream &operator<<(ostream& izlez,Matrica &ma)
  132.       {
  133.         for(int i=0;i<ma.m;i++)
  134.         {
  135.             for(int j=0;j<ma.n;j++)
  136.             {
  137.                 cout << ma.A[i][j] << " ";
  138.             }
  139.             cout<<endl;
  140.         }
  141.         return izlez;
  142.       }
  143. };
  144.  
  145. int main()
  146. {
  147.     Matrica A,B,C;
  148.     cin>>A>>B>>C;
  149.     Matrica D=B*C;
  150.     Matrica R=A-D+2;
  151.     cout<<R;
  152.     return 0;
  153. }
  154. ----------------------------------------------------------------
  155. Планинарско друштво Problem 2 (2 / 2)
  156. Да се креира класа за претставување на планинарско друштво во која ќе се чуваат информации за името на друштвото (динамички алоцирана низа од знаци), број на поминати тури (цел број) и број на членови во планинарското друштво (цел број). За оваа класа да се напише:
  157.  
  158. •оператор + за собирање на две друштва што како резултат враќа друштво со број на членови еднаков на збирот од членовите од двете друштва, а останатите атрибути на резултантното друштво ги добиваат вредностите на соодветните атрибути од друштвото со поголем број на членови
  159.  
  160.  
  161. •оператори >, < за споредба во однос на бројот на членови во планинарските друштва
  162.  
  163.  
  164. •оператор << за печатење на информациите за планинарското друштво
  165.  
  166.  
  167. Да се напише функција што на влез прима низа од планинарски друштва и вкупен број на друштва во низата и го печати планинарското друштво што има најголем број на членови .
  168. #include <iostream>
  169. #include <string.h>
  170.  
  171. using namespace std;
  172.  
  173. class PlDrustvo {
  174.  
  175. private:
  176.    
  177.     char *ime;
  178.     int turi;
  179.     int clenovi;
  180.    
  181. public:
  182.    
  183.     PlDrustvo() {}
  184.     PlDrustvo (char *i, int t, int c)
  185.        {
  186.         ime=new char [strlen(i) + 1];
  187.         strcpy(ime, i);
  188.         turi=t;
  189.         clenovi=c;
  190.        }
  191.    
  192.     int getClenovi()
  193.       {
  194.         return clenovi;
  195.       }
  196.    
  197.     PlDrustvo operator + (PlDrustvo const &from)
  198.      {
  199.         PlDrustvo temp;
  200.         temp.clenovi = clenovi + from.clenovi;
  201.         if (clenovi >= from.clenovi)
  202.            {
  203.             temp.ime = new char [strlen(ime)+1];
  204.             strcpy(temp.ime, ime);
  205.             temp.turi = turi;
  206.            }
  207.        
  208.            else
  209.            {
  210.             temp.ime = new char [strlen(from.ime)+1];
  211.             strcpy(temp.ime, from.ime);
  212.             temp.turi = from.turi;
  213.            }
  214.        
  215.         return temp;
  216.      }
  217.  
  218.     bool operator > (const PlDrustvo &from)
  219.      {
  220.         return (clenovi > from.clenovi);
  221.      }
  222.  
  223.     bool operator < (const PlDrustvo &from)
  224.      {
  225.         return (clenovi < from.clenovi);
  226.      }
  227.    
  228.     friend ostream& operator << (ostream& output, PlDrustvo& from)
  229.      {
  230.         output << "Ime: " << from.ime << " Turi: " << from.turi << " Clenovi: " << from.clenovi << endl;
  231.         return output;
  232.      }
  233. };
  234.  
  235. void najmnoguClenovi (PlDrustvo *drustva, int n)
  236. {
  237.     int max = 0;
  238.     PlDrustvo maxD;
  239.     for (int i=0; i < n; i++)
  240.         {
  241.         if (drustva[i].getClenovi() > max)
  242.            {
  243.             max = drustva[i].getClenovi();
  244.             maxD = drustva[i];
  245.            }
  246.         }
  247.    
  248.     cout << maxD;
  249. }
  250.  
  251. int main()
  252. {
  253.     PlDrustvo drustva[3];
  254.     PlDrustvo pl;
  255.     for (int i=0; i<3; i++)
  256.       {
  257.         char ime[100];
  258.         int brTuri;
  259.         int brClenovi;
  260.         cin>>ime;
  261.         cin>>brTuri;
  262.         cin>>brClenovi;
  263.         PlDrustvo p(ime,brTuri,brClenovi);
  264.         drustva[i] = p;
  265.  
  266.       }
  267.  
  268.     pl = drustva[0] + drustva[1];
  269.     cout<<pl;
  270.     cout << "Najmnogu clenovi ima planinarskoto drustvo: ";
  271.     najmnoguClenovi(drustva, 3);
  272.  
  273.     return 0;
  274. }
  275. -----------------------------------------------------------------------
  276. Автомобил Problem 3 (1 / 1)
  277.  
  278.  
  279.  
  280. Да се напише класа Automobile во која се чуваат информации за марката на автомобилот (динамички алоцирана низа од знаци), регистрација (динамички алоцирана низа од 5 цели броја) и максимална брзина (цел број). За класата да се обезбедат set и get методите што се користат и да се преоптоварат следните оператори:
  281.  
  282. •оператор == за споредување на два автомобила според регистрацијата
  283.  
  284.  
  285. •оператор << за печатење на податоци на автомобил во формат Marka:име Registracija:[x y z k l]
  286.  
  287.  
  288. Да се напише класа RentACar за агенција за измајмување возила во која се чуваат информација за името на агенцијата (низа од 100 знци), низа од автомобили (динамички алоациана низа од објекти од класата Automobile) и број на автомобили со кој располага (цел број). Во класата RentACar да се напише конструктор со еден аргумент за иницијализација на името на агенцијата. При секое додавање на нов автомобил, динамички алоцираната низа да го зголемува капацитетот за 1 елемент. Во оваа класа да се преоптоварат операторите:
  289.  
  290. += за додавање на нов автомобил во агенцијата и
  291.  
  292.  
  293. -= за отстранување на даден автомобил од агенцијата (оној со иста регистрација).
  294.  
  295.  
  296. Да се напише main функција во која се инстанцира објект од класата RentACar. Во овој објект да се додадат сите автомобили чии информации се читаат од тастатура со операторот +=. Меѓутоа, откриено е дека во внесувањето на податоците има грешка затоа што при обид да се додаде нов автомобил во агенцијата, увидено е дека таа регистрација веќе постои. Во последниот ред од влезот дадени се инфромации тој автомобил. Потребно е да се избрише автомобилот што претходно е погрешно внесен и да се додаде новиот.
  297.  
  298. На излез да се отпечатат името на агенцијата и листа на автомобили што таа ги изнајмува, а чија максимална брзина е поголема од 150. Последново да се направи со функција _pecatiNadBrzina(int max)_ што треба да се дефинира во класата RentACar.
  299. #include <iostream>
  300. #include <cstring>
  301. using namespace std;
  302.  
  303. class Automobile
  304. {
  305. private:
  306. char *marka;
  307. int *registracija;
  308. int brzina;
  309. void setRegistracija(int reg[5])
  310. {
  311. for(int i=0; i<5; i++)
  312. this->registracija[i] = reg[i];
  313. }
  314. public:
  315. Automobile() :brzina(0)
  316. {
  317. marka = new char[1];
  318. registracija = new int[5];
  319. }
  320. Automobile(const char* marka, int registracija[5], int brzina)
  321. {
  322. this->marka = new char[strlen(marka)+1];
  323. this->registracija = new int[5];
  324.  
  325. this->brzina = brzina;
  326. strcpy(this->marka, marka);
  327. setRegistracija(registracija);
  328. }
  329. Automobile(const Automobile& in)
  330. {
  331. this->marka = new char[strlen(in.marka)+1];
  332. this->registracija = new int[5];
  333.  
  334. this->brzina = in.brzina;
  335. strcpy(this->marka, in.marka);
  336. setRegistracija(in.registracija);
  337. }
  338. int getMaxBrzina() const
  339. {
  340. return brzina;
  341. }
  342. friend ostream& operator <<( ostream& out , Automobile& t) {
  343. out << "Marka\t" << t.marka << "\tRegistracija[ ";
  344. for(int i=0; i<5; i++)
  345. out << t.registracija[i] << " ";
  346. cout << "]";
  347. return out;
  348. }
  349. bool operator==(Automobile& t)
  350. {
  351. int flag = 1;
  352. for (int i=0; i<5; i++)
  353. {
  354. if(registracija[i] != t.registracija[i])
  355. {
  356. flag = 0;
  357. break;
  358. }
  359. }
  360. return (flag > 0) ? true : false;
  361. }
  362. Automobile &operator=(Automobile &in)
  363. {
  364. if(this!=&in)
  365. {
  366. delete [] marka;
  367. delete [] registracija;
  368.  
  369. marka = new char[strlen(in.marka)+1];
  370. registracija = new int[5];
  371.  
  372. brzina = in.brzina;
  373. strcpy(marka, in.marka);
  374. setRegistracija(in.registracija);
  375. }
  376. return *this;
  377. }
  378.  
  379. ~Automobile()
  380. {
  381. delete[] marka;
  382. delete[] registracija;
  383. }
  384. };
  385.  
  386. class RentACar
  387. {
  388.    
  389. private:
  390. char ime[100];
  391. Automobile *avtomobili;
  392. int brAvtomobili;
  393.    
  394. public:
  395.         RentACar(const char *name): brAvtomobili(0)
  396.         {
  397.                 avtomobili = new Automobile[0];
  398.                 strcpy(ime, name);
  399.         }
  400.  
  401.     RentACar &operator=(const RentACar &in)
  402.         {
  403.                 if(this!=&in)
  404.                 {
  405.                         delete [] avtomobili;
  406.                         brAvtomobili = in.brAvtomobili;
  407.                         for(int i=0; i<brAvtomobili; i++)
  408.                                 {
  409.                                 avtomobili[i] = in.avtomobili[i];
  410.                                 }
  411.                         avtomobili = new Automobile[brAvtomobili];
  412.                         strcpy(ime, in.ime);
  413.                 }
  414.                 return *this;
  415.         }
  416.    
  417.         RentACar& operator+=(Automobile t )
  418.     {
  419.         if(brAvtomobili == 0)
  420.         avtomobili = new Automobile[1];
  421.         Automobile * tmp = new Automobile [brAvtomobili + 1];
  422.         for (int i = 0; i < brAvtomobili ; i ++)
  423.         tmp[i] = avtomobili[i];
  424.         tmp[brAvtomobili++] = t;
  425.         delete[] avtomobili;
  426.         avtomobili = tmp ;
  427.         return *this;
  428.         }
  429.         RentACar& operator -=( Automobile t ) {
  430.         int newCount = 0;
  431.         Automobile * tmp = new Automobile[brAvtomobili];
  432.         for (int i = 0; i < brAvtomobili; i++) {
  433.         if (!( avtomobili[i] == t))
  434.         tmp[newCount++] = avtomobili[i];
  435.         }
  436.         delete[] avtomobili;
  437.         avtomobili = tmp;
  438.         brAvtomobili = newCount;
  439.         return *this;
  440.         }
  441.    
  442.    
  443.         void pecatiNadBrzina(int speed)
  444.         {
  445.         cout<<ime<<endl;
  446.         if(brAvtomobili != 0)
  447.         for(int i=0; i<brAvtomobili; i++)
  448.         {
  449.         if(avtomobili[i].getMaxBrzina() > speed)
  450.         cout<< avtomobili[i]<<endl;
  451.         }
  452.         }
  453.    
  454.         ~RentACar()
  455.         {
  456.         delete[] avtomobili;
  457.         }
  458. };
  459.  
  460. int main()
  461. {
  462.    RentACar agencija("FINKI-Car");
  463.    int n;
  464.    cin>>n;
  465.    
  466.    for (int i=0;i<n;i++)
  467.    {
  468.         char marka[100];
  469.         int regisracija[5];
  470.         int maximumBrzina;
  471.    
  472.         cin>>marka;
  473.    
  474.         for (int i=0;i<5;i++)
  475.                 cin>>regisracija[i];
  476.    
  477.         cin>>maximumBrzina;
  478.    
  479.         Automobile nov=Automobile(marka,regisracija,maximumBrzina);
  480.        
  481.         //dodavanje na avtomobil
  482.         agencija+=nov;  
  483.        
  484.    }
  485.     //se cita grehsniot avtmobil, za koj shto avtmobilot so ista registracija treba da se izbrishe
  486.     char marka[100];
  487.     int regisracija[5];
  488.     int maximumBrzina;
  489.     cin>>marka;
  490.     for (int i=0;i<5;i++)
  491.     cin>>regisracija[i];
  492.     cin>>maximumBrzina;
  493.    
  494.     Automobile greshka=Automobile(marka,regisracija,maximumBrzina);
  495.    
  496.     //brishenje na avtomobil
  497.     agencija-=greshka;
  498.    
  499.     agencija.pecatiNadBrzina(150);
  500.    
  501.     return 0;
  502. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement