بسماهللالرحمنالرحیم برنامهسازی پیشرفته Advanced Programming دانشکده مهندسی کامپیوتر مدرس :آرش توکل تمرین شماره 4 تاریخ تحویل 13 :اردیبهشت قبل از انجام تمرینها موارد زیر را به دقت مطالعه کنید: در خط اوّل هر یک از برنامهها شمارهي دانشجویی خود را به صورت زیر بنویسید: // ID: your Student ID بعد از نوشتن همهي برنامهها فایل مربوطه را در یک پوشه با نام assignment#4_stdIDقرار دهید (که در آن stdIDشمارهي دانشجویی شما میباشد) و سپس این پوشه را فشرده کنید .فایل فشرده شده را به آدرس [email protected]ارسال نمایید. عنوان ایمیل باید به صورت assignment#4_stdIDباشد ،که در آن stdIDشماره دانشجویی شما است. اشتباه در نامگذاري فایل برنامهها و فایل فشرده شده و یا عنوان ایمیل فرستاده شده ،موجب عدم تصحیح تمرین شما میشود. نحوهي ورودي گرفتن و خروجی دادن برنامههاي شما باید دقیقاً به صورت گفته شده در مسئله باشد. به هر یک از برنامههاي شما تعدادي تست داده خواهد شد .توصیه میشود که حتماً یک بار تستهاي نمونه را به برنامههایتان بدهید. گذاشتن کامنت براي قسمتهاي مختلف برنامههایتان و نامگذاري مناسب متغیرها را فراموش نکنید .به خصوص توابع و متغییرهاي اصلی برنامهتان .کامنتگذاري جزو نمرهاي از هر سؤال است. به ازاي هر روز تأخیر در ارسال برنامهها %02 ،از نمرهي این تمرین کاسته خواهد شد. به برنامههاي مشابه به میزان نمرهي سؤال ،نمرهي منفی تعلق خواهد گرفت. هرگونه سؤال در مورد تمرینات را با عنوان ] assignment#4_question[xکه ] [xشمارهي مسئلهي مورد نظر است ،به آدرس [email protected]ارسال کنید. .1مرتبسازی سریع ()quickSort.cpp در این تمرین شما باید الگوریتم مرتبسازي سریع را با استفاده از کتابخانه pthreadپیادهسازي کنید .در هر گام از مرتبسازي براي مرتب کردن دو زیر آرایه جدید از دو Threadاستفاده کنید .در خروجی برنامه کافی است تا آرایه مرتب شده را نمایش دهید. نکته :3نوشتن این برنامه بدون استفاده از کتابخانه pthreadهیچ نمرهاي در بر نخواهد داشت. نکته :0فایل quicksort.cppرا بفرستید. نمونه ورودي و خروجی : در خط اول اندازه آرایه و در خط بعدي عناصر آرایه داده میشود. Input 12 3 9 15 17 2 14 19 8 4 3 16 5 Output 2 3 3 4 5 8 9 14 15 16 17 19 )elementary_set.h( Template .2 در این سوال باید داده ساختار زیر را به صورت Templateپیادهسازي کنید. class elementary_set این داده ساختار باید شبیه مجموعه رفتار کند .براي این کالس توابعی با نام ،ورودي و خروجیهاي زیر پیادهسازي کنید: )( elementary_set این constructorباید یک مجموعه تهی ایجاد کند. )& elementary_set (const elementary_set یک copy constructorاست. )(~ elementary_set یک destructorاست. )(clear باید همه اعضاي مجموعه را حذف کند ( .یعنی آن مجموعه به مجموعه تهی تبدیل میشود) . ) & elementary_set & operator = ( const elementary_set تنها توضیح الزم این است که این تابع باید refrenceبه خود همان objectرا برگرداند. bool operator == ( const elementary_set & ) const بررسی میکند که دو مجموعه دقیقا یکی هستند یا خیر. unsigned int size ( ) const تعداد عناصر دورن مجموعه را باز میگرداند. type_of_data get_min () const کوچکترین عنصر درون مجموعه را باز میگرداند ( .با فرض ناتهی بودن مجموعه ) type_of_data get_max () const کوچکترین عنصر درون مجموعه را باز میگرداند ( .با فرض ناتهی بودن مجموعه ) ) & bool insert (const type_of_data این تابع باید عنصر جدید را به مجموعه اضافه کند ،البته به شرطی که آن داده قبال در مجموعه نبوده باشد .در صورتیکه داده به مجموعه اضافه شد trueو در غیر این صورت falseبر میگرداند. bool find (const type_of_data & ) const بررسی می کند که داده موردنظر در مجموعه هست یا نه ( .اگر باشد true ،و در غیر این صورت falseبرمیگرداند). ) & bool erase (const type_of_data داده مورد نظر را اگر مجموعه باشد ،پاک میکند و trueبرمیگرداند .در غیر این صورت falseبرمیگرداند. type_of_data upper_bound (const type_of_data &) const کوچک ترین عنصر بزرگتر از داده مورد نظر را برمیگرداند ( .با فرض وجود چنین عضوي در مجموعه ) type_of_data lower_bound (const type_of_data &) const بزرگترین عنصر کوچکتر از داده مورد نظر را برمیگرداند ( .با فرض وجود چنین عضوي در مجموعه ) unsigned int range (const type_of_data & , const type_of_data & ) const تعداد عناصر بزرگتر یا مساوي داده اول و کوچکتر از داده دوم را باز میگرداند. void get_all ( type_of_data* ) const همه عناصر دورن مجموعه را به صورت مرتب شده از کوچک به بزرگ در آرایه داده شده میریزد. نکته :3براي این سوال اصال نباید از STLاستفاده کنید. نکته :0براي مقایسه دادهها فقط از عملگر کوچکتري استفاده کنید ( .ممکن است عمگر هاي بزرگتري یا == براي داده ها تعریف نشده باشد ،به همین دلیل در داده ساختارهایتان از این operatorها راي مقایسه داده ها استفاده نکنید) . نکته : 1داده ساختارهایتان را به گونه اي بنویسید که حافظه مصرفی هر لحظه متناسب با تعداد داده هاي دورن مجموعه باشد ( .مثال نباید فرض کنید که تعداد داده هاي درون مجموعه از فالن عدد بیشتر نمیشود و ظرفیتی محدود و ثابت به داده ساختارهایتان نسبت دهید) . نکته :4فایل elementary_set.hرا بفرستید.
© Copyright 2025 Paperzz