Основы языка программирования C++ с применением объектно-ориентированного программирования. Чернышов М.К. - 43 стр.

UptoLike

Составители: 

public:
TPoint a,b; /* ɥɟɜɵɣ ɜɟɪɯɧɢɣ ɢ ɩɪɚɜɵɣ ɧɢɠɧɢɣ ɭɝɥɵ
ɩɪɹɦɨɭɝɨɥɶɧɢɤɚ ɫɨɨɬɜɟɬɫɬɜɟɧɧɨ */
void move(int dx, int dy) /* ɩɟɪɟɦɟɳɟɧɢɟ
ɩɪɹɦɨɭɝɨɥɶɧɢɤɚ */
{a.relmove(dx, dy); b.relmove(dx, dy);}
void grow(int dx, int dy) // ɢɡɦɟɧɟɧɢɟ ɪɚɡɦɟɪɨɜ
{a.x+=dx; a.y+=dy; b.x+=dx; b.y+=dy;}
void intersect(const TRect& r);
// ɨɛɳɚɹ ɱɚɫɬɶ ɞɜɭɯ ɩɪɹɦɨɭɝɨɥɶɧɢɤɨɜ
void Union(const TRect& r);
// ɩɪɹɦɨɭɝɨɥɶɧɢɤ, ɨɯɜɚɬɵɜɚɸɳɢɣ ɞɜɚ ɩɪɹɦɨɭɝɨɥɶɧɢɤɚ
Boolean contains(const TPoint& p);
// TRUE, ɟɫɥɢ ɬɨɱɤɚ p ɩɪɢɧɚɞɥɟɠɢɬ ɩɪɹɦɨɭɝɨɥɶɧɢɤɭ
Boolean isEmpty();
//TRUE, ɟɫɥɢ ɲɢɪɢɧɚ ɢɥɢ ɜɵɫɨɬɚ ɩɪɹɦɨɭɝɨɥɶɧɢɤɚ ɪɚɜɧɵ ɧɭɥɸ
TRect(int ax, int ay, int bx, int by) // ɤɨɧɫɬɪɭɤɬɨɪ
{a.x=ax; a.y=ay; b.x=bx; b.y=by;};
TRect (TPoint p1, TPoint p2) // ɤɨɧɫɬɪɭɤɬɨɪ
{a=p1; b=p2;};
TRect() // ɤɨɧɫɬɪɭɤɬɨɪ ɛɟɡ ɩɚɪɚɦɟɬɪɨɜ
{a.x=a.y=b.x=b.y=0;};
};
/* Ɇɟɬɨɞɵ ɤɥɚɫɫɚ TRect */
void TRect::intersect(const TRect& r)
{
a.x=max(a.x, r.a.x); b.x=min(b.x, r.b.x);
a.y=max(a.y, r.a.y); b.y=min(b.y, r.b.y);
};
void TRect::Union(const TRect& r)
{a.x=(a.x<=r.a.x)?a.x:r.a.x;
a.y=(a.y<=r.a.y)?a.y:r.a.y;
b.x=(b.x>=r.b.x)?b.x:r.b.x;
b.y=(b.y>=r.b.y)?b.y:r.b.y;
};
Boolean TRect::contains(const TPoint& p)
{
return Boolean(p.x>=p.x&&p.x<b.x&&p.y>=a.y&&p.y<b.y);
}
Boolean TRect::isEmpty()
{return Boolean(a.x>=b.x||a.y>=b.y);};
Ȼɨɥɟɟ ɩɨɥɧɚɹ ɢɧɮɨɪɦɚɰɢɹ ɨ ɤɨɧɫɬɪɭɤɬɨɪɚɯ ɨɛɴɟɤɬɧɵɯ ɬɢɩɨɜ ɩɪɢɜɟɞɟ-
ɧɚ ɜ ɫɥɟɞɭɸɳɟɦ ɪɚɡɞɟɥɟ.
Ɉɛɴɹɜɥɟɧɢɟ ɩɟɪɟɦɟɧɧɨɣ ɨɛɴɟɤɬɧɨɝɨ ɬɢɩɚ ɫɬɪɨɢɬɫɹ ɩɨ ɨɛɳɢɦ ɩɪɚɜɢ-
ɥɚɦ, ɧɨ ɡɚ ɢɞɟɧɬɢɮɢɤɚɬɨɪɨɦ ɩɟɪɟɦɟɧɧɨɣ ɦɨɠɧɨ ɭɤɚɡɚɬɶ ɜ ɫɤɨɛɤɚɯ ɚɪɝɭ-
ɦɟɧɬɵ ɨɩɪɟɞɟɥɟɧɧɨɝɨ ɜ ɤɥɚɫɫɟ ɤɨɧɫɬɪɭɤɬɨɪɚ, ɧɚɩɪɢɦɟɪ:
TRect r1(2,4,20,50); /* ɢɧɢɰɢɚɥɢɡɚɰɢɹ ɫ ɢɫɩɨɥɶɡɨɜɚɧɢɟɦ
ɩɟɪɜɨɝɨ ɤɨɧɫɬɪɭɤɬɨɪɚ */
TRect *pr=&r1; // ɭɤɚɡɚɬɟɥɶ ɧɚ TRect
43
        public:
         TPoint a,b;      /* ɥɟɜɵɣ ɜɟɪɯɧɢɣ ɢ ɩɪɚɜɵɣ ɧɢɠɧɢɣ ɭɝɥɵ
                             ɩɪɹɦɨɭɝɨɥɶɧɢɤɚ ɫɨɨɬɜɟɬɫɬɜɟɧɧɨ */
         void move(int dx, int dy)                /* ɩɟɪɟɦɟɳɟɧɢɟ
                                               ɩɪɹɦɨɭɝɨɥɶɧɢɤɚ */
            {a.relmove(dx, dy); b.relmove(dx, dy);}
         void grow(int dx, int dy)         // ɢɡɦɟɧɟɧɢɟ ɪɚɡɦɟɪɨɜ
            {a.x+=dx; a.y+=dy; b.x+=dx; b.y+=dy;}
         void intersect(const TRect& r);
                            // ɨɛɳɚɹ ɱɚɫɬɶ ɞɜɭɯ ɩɪɹɦɨɭɝɨɥɶɧɢɤɨɜ
         void Union(const TRect& r);
              // ɩɪɹɦɨɭɝɨɥɶɧɢɤ, ɨɯɜɚɬɵɜɚɸɳɢɣ ɞɜɚ ɩɪɹɦɨɭɝɨɥɶɧɢɤɚ
         Boolean contains(const TPoint& p);
               // TRUE, ɟɫɥɢ ɬɨɱɤɚ p ɩɪɢɧɚɞɥɟɠɢɬ ɩɪɹɦɨɭɝɨɥɶɧɢɤɭ
         Boolean isEmpty();
       //TRUE, ɟɫɥɢ ɲɢɪɢɧɚ ɢɥɢ ɜɵɫɨɬɚ ɩɪɹɦɨɭɝɨɥɶɧɢɤɚ ɪɚɜɧɵ ɧɭɥɸ
         TRect(int ax, int ay, int bx, int by)    // ɤɨɧɫɬɪɭɤɬɨɪ
            {a.x=ax; a.y=ay; b.x=bx; b.y=by;};
         TRect (TPoint p1, TPoint p2)             // ɤɨɧɫɬɪɭɤɬɨɪ
            {a=p1; b=p2;};
         TRect()                   // ɤɨɧɫɬɪɭɤɬɨɪ ɛɟɡ ɩɚɪɚɦɟɬɪɨɜ
            {a.x=a.y=b.x=b.y=0;};
        };

     /* Ɇɟɬɨɞɵ ɤɥɚɫɫɚ TRect */
     void TRect::intersect(const TRect& r)
        {
        a.x=max(a.x, r.a.x); b.x=min(b.x, r.b.x);
        a.y=max(a.y, r.a.y); b.y=min(b.y, r.b.y);
        };
     void TRect::Union(const TRect& r)
        {a.x=(a.x<=r.a.x)?a.x:r.a.x;
        a.y=(a.y<=r.a.y)?a.y:r.a.y;
        b.x=(b.x>=r.b.x)?b.x:r.b.x;
        b.y=(b.y>=r.b.y)?b.y:r.b.y;
        };
     Boolean TRect::contains(const TPoint& p)
        {
        return Boolean(p.x>=p.x&&p.x=a.y&&p.y=b.x||a.y>=b.y);};
     Ȼɨɥɟɟ ɩɨɥɧɚɹ ɢɧɮɨɪɦɚɰɢɹ ɨ ɤɨɧɫɬɪɭɤɬɨɪɚɯ ɨɛɴɟɤɬɧɵɯ ɬɢɩɨɜ ɩɪɢɜɟɞɟ-
ɧɚ ɜ ɫɥɟɞɭɸɳɟɦ ɪɚɡɞɟɥɟ.
     Ɉɛɴɹɜɥɟɧɢɟ ɩɟɪɟɦɟɧɧɨɣ ɨɛɴɟɤɬɧɨɝɨ ɬɢɩɚ ɫɬɪɨɢɬɫɹ ɩɨ ɨɛɳɢɦ ɩɪɚɜɢ-
ɥɚɦ, ɧɨ ɡɚ ɢɞɟɧɬɢɮɢɤɚɬɨɪɨɦ ɩɟɪɟɦɟɧɧɨɣ ɦɨɠɧɨ ɭɤɚɡɚɬɶ ɜ ɫɤɨɛɤɚɯ ɚɪɝɭ-
ɦɟɧɬɵ ɨɩɪɟɞɟɥɟɧɧɨɝɨ ɜ ɤɥɚɫɫɟ ɤɨɧɫɬɪɭɤɬɨɪɚ, ɧɚɩɪɢɦɟɪ:
     TRect r1(2,4,20,50);       /* ɢɧɢɰɢɚɥɢɡɚɰɢɹ ɫ ɢɫɩɨɥɶɡɨɜɚɧɢɟɦ
                                   ɩɟɪɜɨɝɨ ɤɨɧɫɬɪɭɤɬɨɪɚ */
     TRect *pr=&r1;                         // ɭɤɚɡɚɬɟɥɶ ɧɚ TRect

                                 43