توضیحات تکمیلی مربوط به مسابقه را در بلاگ Quera بخوانید: blog.quera.ir
در یک اپ ورزشی، میخواهیم بروزرسانی مخصوص جام جهانی را منتشر کنیم. در این بروزرسانی (که البته قبل از شروع جام جهانی قرار بود منتشر شود!)، میخواهیم بتوانیم رتبهبندی تیمها در مرحله گروهی را شبیهسازی کنیم. ساختار اولیهی کدی که قرار است این شبیهسازی را انجام دهد به شما داده میشود و شما باید آن را تکمیل کنید.
(منبع : دیجیکالا مگ)
به طور کلی، تیمی از یک گروه صعود پیدا میکند که امتیازات بیشتری نسبت به حریفان خود داشته باشد. این بند شامل جمع امتیازات برد (۳ امتیاز)، مساوی (۱ امتیاز) و باخت (۰ امتیاز) است.
از بین تیمهای همامتیاز، تیمی صعود میکند که تفاضل گل بیشتری داشته باشد. تفاضل گل یعنی اختلاف گلهای زده شده با خورده شدهی یک تیم.
بند سوم قانون فیفا بر این اساس است که تیمی که بیشترین گل زده را دارد مستحق صعود است. پس بین دو تیمی که امتیازشان برابر است و تفاضل گلشان نیز برابر است، تیمی که بیشتر گل زده رتبهی بهتری میگیرد.
حالا نوبت به نحوهی بازی این تیمها میرسد. فیفا در این شرایط ویژه که امتیاز، تفاضل گل، و تعداد گل زده دو تیم برابر باشد، به تیمی اجازهی صعود میدهد که کمترین کارت را در بازیها گرفته باشد. البته هر کارت امتیازات منفی مشخصی دارد، ولی برای سادهتر شدن صورت این سوال فرض میکنیم تیمی که تعداد کمتری کارت در بازیها دریافت کرده در رتبهی بهتری قرار میگیرد.
اگر دو تیم در مرحلهای از بازی در هر ۴ مورد بالا مشابه هم باشند، فرض میکنیم رتبهشان برابر است. مثلاً در ابتدای جام که هیچ بازیای صورت نگرفته رتبهی همهی ۴ تیم در یک گروه برابر ۱ است، و امسال در گروه تیم ملی کشورمان پس از بازی پرتغال - اسپانیا و ایران - مراکش، ایران صدرنشین گروه بود و رتبهی هر دو پرتغال و اسپانیا برابر ۲ بود و مراکش که امتیازش از آنها کمتر بود، رتبهی ۴ را داشت.
فایل مربوط به خود را دانلود کرده و محتوای آنرا ببینید:
*فایل مربوط به زبان Java : * QorldCup.java
*فایل مربوط به زبان Python3: * QorldCup.py
*فایل مربوط به زبان ++C : * qorld_cup.cpp
فایل مربوط به زبان #C (با کامپایلر #Mono C): QurldCup.cs
پروژهی اولیه شامل کلاس qorld_cup است که در آن توابع زیر را باید تکمیل کنید. شما میتوانید در این کلاس هر تعداد متغیر اضافی که خواستید تعریف کنید، اما متغیر خارج از کلاس بصورت global نباید تعریف کنید. (در صورت تعریف کردن ممکن است نمرهای دریافت نکنید.)
تابع initial که لیست نام کوتاه ۳۲ کشور حاضر در این دوره از جام جهانی را ورودی میگیرد، که ۴ تای اول در گروه ۱، ۴ تای دوم در گروه ۲، و همینطور تا ۴ تای هشتم که در گروه ۸ هستند. نام کوتاه هر کشور یک رشته از حروف بزرگ انگلیسی حداکثر ۳ حرفی است. مثلا ایران IRN
است و چین CHN
است.
تابع add_game_result که ۶ پارامتر ورودی میگیرد: به ازای هر یک از ۲ تیم: نام کوتاه تیم، تعداد گلهای زده در این بازی، و تعداد کارتهای دریافت کرده در این بازی.
تابع get_score که نام کوتاه یک تیم را ورودی میگیرد و امتیازش را برمیگرداند.
تابع get_rank که نام کوتاه یک تیم را ورودی میگیرد و رتبهاش در گروه خودش را برمیگرداند.
میتوانید کد خود را بوسیلهی stdin و stdout در کنسول تست کنید. پس از اجرا کردن کد، ابتدا تعداد دستوراتی که میخواهید به برنامه بدهید را بنویسید. سپس نام کوتاه ۳۲ تیم را وارد کنید تا به تابع initial داده شود، و سپس میتوانید به شکل زیر با توابع ارتباط داشته باشید:
فرض کنید ورودی initial
مانند جام جهانی امسال بوده باشد. این ۱۰ تعامل با کد نمایانگر ۲ بازی ابتدایی در گروه تیم ملی کشورمان میباشد، و وضعیت گروه پس از این ۲ بازی را نشان میدهد:
و خروجیهای برنامه چنین میشود:
فایل ابتدایی مربوطه را دریافت کرده و توابع گفته شده را تکمیل کرده و ارسال کنید. تنها کلاس مربوطه را تغییر دهید!