ﻫندسﻪ
خــﻂ و چنــد ضــلعی پیــاده ســازی ، بــرای ایــﻦ ســوال بایــد کــﻼس هــایی بــرای شــبیه ســازی مفــاهیم اولیــه هندســی ماننــد نﻘﻄــه کنیــد .
امــا در پیــاده ســازی کــﻼس مربــوط بــه چنــد ضــلعی ﺣتمــا ، نحــوه ی پیــاده ســازی ایــﻦ کــﻼس هــا بــر عهــده ی خــود شماســت بایــد یکــی از کﻼس های پیاده سازی شده برای خﻂ یا نﻘﻄه استفاده کنید .
نﻘﻄه :
کﻼس پیاده سازی شده برای نﻘﻄه باید شامل توابﻊ زیر باشد :
class point {
…
point (int x, int y ) ;
int getX();
int getY();
int distance (point*);
line* Line (point*);
polygon* triangle(point*, point*);
…
};
:ایــﻦ تــابﻊ point (int x, int y ) ایــﻦ کــﻼس اســت .دو مﺨتﺼــه ی مربــوط شــی را ﮔرفتــه و شــی مــی constructor
سازد.
: ایﻦ تابﻊ مﻘدار مربوط به مﺨتﺼه ی int getX() را بر میگرداند x .
: ایﻦ تابﻊ مﻘدار مربوط به مﺨتﺼه ی int getY() . را بر میگرداند y
: ایـــﻦ تـــابﻊ فاصـــله ی بـــیﻦ ایـــﻦ نفﻄـــه و نﻘﻄـــه ی پـــاس داده شـــده را محاســـبه کـــرده و بـــاز int distance(point*)
میگرداند .
: ایـــﻦ تـــابﻊ خـــﻂ ایﺠـــاد شـــده توســـﻂ ایـــﻦ نﻘﻄـــه و نﻘﻄـــه ی پـــاس داده شـــده را ســـاخته و یـــﮏ line* Line(point*) اشـــاره
ﮔر به شی ساخته شده بر میگرداند.
: ایـــﻦ تـــابﻊ مﺜلـــﺚ ایﺠـــاد شـــده توســـﻂ ایـــﻦ نﻘﻄـــه و دو نﻘﻄـــه ی پـــاس داده Polygon* triangle(point* , point*)
شده را میسازد و یﮏ اشاره ﮔر به شی ساخته شده بر میگرداند.
خﻂ:
کﻼس پیاده سازی شده برای خﻂ باید شامل توابﻊ زیر باشد.
class line {
...
line(point*,point*);
bool isParallel(line*);
bool isPrependicular(line*);
point* intersection(line*);
line* parallel(point*);
polygon* triangle(line*,line*);
...
};
مربــوط بــه ایــﻦ کــﻼس اســت .دو نﻘﻄــه ﮔرفتــه و بــا توجــه بــه آن هــا constructor :ایــﻦ تــابﻊ line (point* , point*)
شی خﻂ را می سازد .
. :ایﻦ تابﻊ وضعیت توازی ایﻦ خﻂ با خﻂ داده شده را باز میگرداند bool isParallel(line*)
. :ایﻦ تابﻊ وضعیت تعامد ایﻦ خﻂ با خﻂ داده شده را باز میگرداند bool isPrependicular(line*)
:ایــــﻦ خــــﻂ نﻘﻄــــه ی برخــــورد ایــــﻦ خــــﻂ بــــا خــــﻂ داده شــــده را محاســــبه میکنــــد point* intersection(line*) و
برمیگرداند (.فرض کنید مﺨتﺼات نﻘﻄه ی بر خورد ﺣتما صحیﺢ است ) .
. با ایﻦ خﻂ میسازد و برمیگرداند ، :ایﻦ تابﻊ یﮏ خﻂ موازی ﮔﺬرنده از نﻘﻄه ی داده شده line* parallel(point*)
:ایـــﻦ تـــابﻊ مﺜلـــﺚ ســـاخته شـــده از ایـــﻦ خـــﻂ و دو خـــﻂ داده شـــده را ســـاخته و بـــاز polygon* triangle(line*,line*)
) . نﻘﻄه ی برخورد مﺨتﺼات صحیﺢ دارند 3 میگرداند ( .فرض کنید هر
چند ضلعی :
کﻼس پیاده سازی شده برای چند ضلعی ها باید شامل موارد زیر باشد .
class polygon { …
polygon(point** arr,int size);
polygon(line** arr,int size); bool isTriangle();
bool isSquare();
...
};
هـــای ایـــﻦ کـــﻼس اســـت و در آن بایـــد شـــی constructor :ایـــﻦ تـــابﻊ یکـــی از polygon (point** arr , int size)
مربــوط بــه چنــد ضــلعی بــر اســاس نﻘــاط داده شــده ســاخته شــود ( .نﻘــاط-راس هــای چنــد ضــلعی - بــه ترتیــﺐ در آرایــه قــرار خواهند ﮔرفت )
هـــای ایـــﻦ کـــﻼس اســـت و در آن بایـــد شـــی constructor :ایـــﻦ تـــابﻊ یکـــی از polygon (line** arr ,int size)
ضــلﻊ هــای چنــد ضــلعی- بــه ترتیــﺐ در آرایــه قرار – مربــوط بــه چنــد ضــلعی بــر اســاس خﻄــوط داده شــده ســاخته شــود ( .خﻄــوط خواهند ﮔرفت )
. باز می ﮔرداند false و در ﻏیر ایﻦ صورت true :در صورت مﺜلﺚ بودن ایﻦ چند ضلعی bool isTriangle()
. باز می ﮔرداند false و در ﻏیر ایﻦ صورت true :در صورت مربﻊ بودن ایﻦ چند ضلعی bool isSquare()
توجه کنید :
اســت .در نتیﺠــه تســت هــای داده شــده ﻃــوری انتﺨــاب میشــوند کــه نﻘــاط برخــورد و فاصــله ی نﻘــاط هــم int .مﺨتﺼــات از نــوع 1 یﮏ عدد صحیﺢ شود .
. .تعریف توابﻊ ﺣتما باید به صورت خواسته شده باشد 2
: .فایل هایی که باید در پوشه ی مربوط به ایﻦ سوال قرار ﮔیرند 3
point.h (a
line.h (b
polygon.h (c
point.cpp (d
line.cpp (e
polygon.cpp (f
. ندارد main .ایﻦ تمریﻦ تابﻊ 4
. .باید تا جایی که ممکﻦ است به محتویات داخل کﻼس ها به صورت عمومی دسترسی نداشته باشیم