StefiIOE

Kvadrat i pravoagolnik lab 6 oop : nasleduvanje

Apr 28th, 2020
800
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2. #include<cstring>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. class Kvadrat {
  8.     protected:
  9.     double a;
  10.     public:
  11.     Kvadrat(double a=0.0)
  12.     {
  13.     this->a=a;
  14.     }
  15.     Kvadrat(const Kvadrat &k)
  16.     {
  17.     this->a=k.a;
  18.     }
  19.     double perimetar() {
  20.        
  21.         double L=0.0;
  22.        
  23.         L = 4*a;
  24.        
  25.         return L;
  26.     }
  27.    
  28.    
  29.      double plostina()
  30.      {
  31.         double P=0.0;
  32.          
  33.          P=a*a;
  34.          
  35.          return P;
  36.      }
  37.    
  38.    
  39.     void pecati()
  40.     {
  41.         cout<<"Kvadrat so dolzina a="<<a<<" ima plostina P="<<plostina()<<" i perimetar L="<<perimetar()<<endl;
  42.     }
  43. };
  44.  
  45. class Pravoagolnik : public Kvadrat {
  46.     private:
  47.     double x;
  48.     double y;
  49.    
  50.     public:
  51.    
  52.     Pravoagolnik(){};
  53.     Pravoagolnik (const Kvadrat &k, double x, double y) : Kvadrat(k)  {
  54.            
  55.         this->x=x+a;
  56.         this->y=y+a;
  57.     }
  58.    
  59.     Pravoagolnik (const Pravoagolnik &p)
  60.     {
  61.         this->x=p.x;
  62.         this->y=p.y;
  63.     }
  64.    
  65.     double perimetar()
  66.     {
  67.          
  68.         double L=0.0;
  69.         L=((2*x)+(2*y));
  70.         return L;
  71.        
  72.     }
  73.     double plostina()
  74.     {    
  75.          
  76.         double P=0.0;
  77.             P=x*y;
  78.             return P;
  79.        
  80.        
  81.        
  82.     }
  83.    
  84.     void pecati()
  85.     {
  86.         if(x!=y)
  87.     cout<<"Pravoagolnik so strani: "<<x<<" i "<<y<<" ima plostina P="<<plostina()<<" i perimetar L="<<perimetar()<<endl;
  88.         else{
  89.             if(x==y)
  90.             {
  91.                a=(x+y)/2;
  92.                 Kvadrat::pecati();
  93.              }
  94.        
  95.        
  96.     }
  97.     }
  98.    
  99. };
  100.  
  101. int main() {
  102.     int n;
  103.     double a,x,y;
  104.     Kvadrat * kvadrati;
  105.     Pravoagolnik * pravoagolnici;
  106.    
  107.     cin>>n;
  108.    
  109.     kvadrati = new Kvadrat [n];
  110.     pravoagolnici = new Pravoagolnik [n];
  111.    
  112.     for (int i=0;i<n;i++){
  113.         cin>>a;
  114.        
  115.         kvadrati[i] = Kvadrat(a);
  116.     }
  117.    
  118.     for (int i=0;i<n;i++){
  119.         cin>>x>>y;
  120.        
  121.         pravoagolnici[i]=Pravoagolnik(kvadrati[i],x,y);
  122.     }
  123.    
  124.     int testCase;
  125.     cin>>testCase;
  126.    
  127.     if (testCase==1){
  128.         cout<<"===Testiranje na klasata Kvadrat==="<<endl;
  129.         for (int i=0;i<n;i++)
  130.             kvadrati[i].pecati();
  131.     }
  132.     else {
  133.         cout<<"===Testiranje na klasata Pravoagolnik==="<<endl;
  134.         for (int i=0;i<n;i++)
  135.             pravoagolnici[i].pecati();
  136.     }
  137. }
RAW Paste Data