مجموعه رویدادهای المپیکفناوری پردیس امسال هم رو به پایان است. این سری رویداد که امسال با شکوه بیشتری نسبت به تمام رویدادهای دیگر برگزار شد قرار است در پایان، مراسمی مجلل برای اهدای مدالها و جوایزی ویژه به نفرات برتر شرکتکننده داشته باشد. یونس مسئول هماهنگی این جشن بزرگ است و از شما که دستیار وی هستید برای انجام کارهای مربوط به جشن کمک میخواهد.
جزئیات پروژه
شما میتوانید پروژهی اولیه را از این لینک دانلود کنید.
تابعی با نام handleCeremony
پیادهسازی کنید که آرایهای از افراد را که کلاس Person
نمایندهای از آنهاست را تحویل میگیرد و سپس این افراد را به صورت نزولی مرتبسازی میکند تا لیستی برای مراسم اهدای جوایز آماده شود.
توضیحات کلاس Person
این کلاس نمایندهی افراد شرکتکننده در رویداد المپیکفناوری است. ساختار متدها و ویژگیهای کلاس به شکل زیر تعریف میشود:
- ویژگی
personName
: این ویژگی به صورت رشتهای از نام فرد شرکتکننده در رویداد است. - ویژگی
bootcampScore
: این ویژگی به صورت عدد صحیح مثبت بیانگر امتیازی است که فرد در بوتکمپهای المپیک فناوری کسب کرده است. ضریب این ویژگی است. - ویژگی
onlineContestScore
: این ویژگی به صورت عدد صحیح مثبت بیانگر امتیازی است که فرد در مسابقات مجازی المپیک فناوری کسب کرده است. ضریب این ویژگی است. - ویژگی
inpersonContestScore
: این ویژگی به صورت عدد صحیح مثبت بیانگر امتیازی است که فرد در مسابقات حضوری المپیک فناوری کسب کرده است. ضریب این ویژگی است. -ویژگیpassionRate
: این ویژگی به صورت عددی اعشاری بیانگر میزان شور و اشتیاق فرد است که توسط داوران مسابقه تعیین میشود و مقداری بین تا دارد. ضریب این ویژگی است. - متد
calculateTotalScore
: این متد مجموع وزندار امتیاز فرد را با توجه به ضرایب ویژگیها محاسبه میکند. - متد
displayInfo
: این متد اطلاعات شرکتکننده را چاپ میکند.
شما باید تابع handleCeremony
را به صورتی پیاده سازی کنید که افراد را بر اساس مجموع وزندار امتیازهایشان به صورت نزولی مرتبسازی کند. در این بین اگر مجموع وزندار امتیاز دو فرد با یکدیگر برابر شد، اولویت در مقایسه و رتبهدهی بر اساس ویژگی با ضریب بیشتر است. یعنی اگر دو فرد در مجموع امتیاز یکسانی داشته باشند، فردی در مرتبسازی قبلتر ظاهر میشود که امتیازinpersonContestScore
او بزرگتر باشد. (در صورتی که این ویژگی نیز در هر دو فرد برابر بود به سراغ امتیاز onlineContestScore
میرویم و به همین شکل...)
پس از مرتب سازی صرفا باید اطلاعات نفر برتر رویداد ( نفر اول در مرتبسازی انجام شده) توسط فراخوانی متد displayInfo
دریافت و در قالب یک رشته خروجی داده شود.
مقیاسبندی و اعتبارسنجی امتیاز افراد قبلا انجام شده است. همچنین تضمین میشود که تمام امتیازهای هیچ دو فردی با هم برابر نیست.
امضای تابع handleCeremony
بهصورت زیر خواهد بود:
مثال
خروجی موردانتظار:
- همانطور که در خروجی مشاهده میکنید مجموع وزندار امتیاز دو فرد
Safar Ali
وAli Safar
با هم برابر است اما چون امتیازinpersonContestScore
فردی با نامSafar Ali
بیشتر است پس در رتبهبندی قبل از فردی با نامAli Safar
قرار میگیرد.
آنچه باید آپلود کنید
یک فایل PHP که تابع handleCeremony
در آن پیادهسازی شده است آپلود کنید.
ارسال پاسخ برای این سؤال