Advertisement
196040

OOP labs 6 Kvadrat i pravoagolnik

May 3rd, 2020
1,273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.36 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3. class Kvadrat { //Да се дефинира класата Kvadrat во која што се чува информација за:
  4.     protected:
  5.     double a; //должината на страната а на квадратот (double)
  6.     public: //За класата да се дефинираат:
  7.     Kvadrat(){} //default конструктор
  8.     Kvadrat(double a) { //конструктор со аргументи
  9.     this->a=a;
  10.     }
  11.     Kvadrat(const Kvadrat &k) { //copy конструктор
  12.         this->a=k.a;
  13.     }
  14.     double perimetar() { //double perimetar () што пресметува периметар на квадратот
  15.     return 4*a;
  16.     }    
  17.     double plostina() { //double plostina () што пресметува плоштина на квадратот
  18.     return a*a;
  19.     }
  20.     void pecati() { //void pecati () што печати информации за квадратот како во тест примерите
  21.     cout<<"Kvadrat so dolzina a="<<a<<" ima plostina P="<<plostina()<<" i perimetar L="<<perimetar()<<endl;
  22.     }
  23. };
  24. class Pravoagolnik : public Kvadrat { //Да се имплементира класа Pravoagolnik што наследува од класата Kvadrat.
  25.     private:    //Bo неа се чуваат дополнителни информации за:
  26.     double x; //проширувањето x на двете паралелни страни на квадратот (double)
  27.   double y; //проширувањето у на другите две паралелни страни (double)
  28.     public: //За класата да се дефинираат:
  29.     Pravoagolnik(){ //default конструктор
  30.     this->x=0;
  31.     this->y=0;
  32.     }
  33.     Pravoagolnik(const Kvadrat &k, double x, double y) : Kvadrat(k) { //конструктор Pravoagolnik (const Kvadrat &k, double x, double y)
  34.         this->x=x;
  35.         this->y=y;
  36.     }
  37.     Pravoagolnik(const Pravoagolnik &p) { //copy конструктор
  38.          this->x=p.x;
  39.         this->y=p.y;
  40.     }
  41.     double perimetar() { //Да се препокријат трите методи дефинирани погоре за класата Kvadrat.
  42.          return (a+x)*2 + (a+y)*2; //2a+2b = L
  43.     }
  44.     double plostina() {
  45.         return (a+x)*(a+y); // a*b = P
  46.     }
  47.     void pecati() {          
  48.                 if(a+x != a+y) //ako ne se isti pravoagolnik e i printaj za pravoagolnik
  49. cout<<"Pravoagolnik so strani: "<<a+x<<" i "<<a+y<<" ima plostina P="<<plostina()<<" i perimetar L="<<perimetar()<<endl;
  50.         else {
  51.             a = a+x; // strana na a = stranata plus prosiruvanjeto
  52.             Kvadrat::pecati(); } //ako se isti printaj za kvadrat
  53. }
  54. };
  55. int main() {
  56.     int n;
  57.     double a,x,y;
  58.     Kvadrat * kvadrati;
  59.     Pravoagolnik * pravoagolnici;
  60.     cin>>n;
  61.     kvadrati = new Kvadrat [n];
  62.     pravoagolnici = new Pravoagolnik [n];
  63.     for (int i=0;i<n;i++){
  64.         cin>>a;  
  65.         kvadrati[i] = Kvadrat(a);
  66.     }
  67.     for (int i=0;i<n;i++){
  68.         cin>>x>>y;  
  69.         pravoagolnici[i]=Pravoagolnik(kvadrati[i],x,y);
  70.     }
  71.     int testCase;
  72.     cin>>testCase;
  73.     if (testCase==1){
  74.         cout<<"===Testiranje na klasata Kvadrat==="<<endl;
  75.         for (int i=0;i<n;i++)
  76.             kvadrati[i].pecati();
  77.     }
  78.     else {
  79.         cout<<"===Testiranje na klasata Pravoagolnik==="<<endl;
  80.         for (int i=0;i<n;i++)
  81.             pravoagolnici[i].pecati();
  82.     }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement