Advertisement
Dimoo23

Kvadrat i pravoagolnik - nasleduvanje

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