Професионална програма
Loading...
+ Нов въпрос
zh.yordanova avatar zh.yordanova 7 Точки

05. Best player

Здравейте колеги. Трябва ми малко помощ,за да разбера каква проверка трябва да използвам, за да намеря най-добрият играч ако  получавам два еднакви резултата като брой на головете им. Качвам условието и моето решение.

Задача 5. Най-добър играч

Пепи иска да напишете програма, чрез която да разбере кой е най-добрият играч от световното първенство. Информацията, която получавате ще бъде играч и колко гола е отбелязал. От вас се иска да отпечатате кой е играчът с най-много голове и дали е направил хет-трик. Хет-трик е, когато футболистът е вкарал 3 или повече гола. Ако футболистът е вкарал 10 или повече гола, програмата трябва да спре.

Вход:

От конзолата се четат по два реда до въвеждане на команда "END":

  • Име на играч – текст
  • Брой вкарани голове  – цяло положително число в интервала [1 … 10000]

Изход:

На конзолата да се отпечатат 2 реда :

  • На първия ред:

            "{име на играч} is the best player!"

  • На втория ред :
    •  Ако най-добрият футболист е направил хеттрик:

                   "{име на играч} has scored {брой голове} goals and made a hat-trick !!!"

  • Ако най-добрият футболист не е направил хеттрик:

                   "{име на играч} has scored {брой голове} goals."

Примерен вход и изход:

Вход

Изход

Обяснения

Neymar

2

Ronaldo

1

Messi

3

END

Messi is the best player!

He has scored 3 goals and made a hat-trick !!!

Първо се въвежда Neymar с 2 гола като за момента той има най-много голове, след това Ronaldo с 1 гол като той има по-малко голове от Neymar, който е с 2, след това Messi, който има 3 гола. Головете на Messi са повече от тези на Neymar и вече Messi има най-много голове. След като головете са му 3, той е направил и хет-трик.

Вход

Изход

Вход

Изход

Silva

5

Harry Kane

10

Harry Kane is the best player!

He has scored 10 goals and made a hat-trick !!!

Rooney

1

Junior

2

Paolinio

2

END

Junior is the best player!

He has scored 2 goals.

Вход

Изход

Вход

Изход

Petrov

2

Drogba

11

Drogba is the best player!

He has scored 11 goals and made a hat-trick !!!

Zidane

1

Felipe

2

Johnson

4

END

Johnson is the best player!

He has scored 4 goals and made a hat-trick !!!

 

Моето решение: https://pastebin.com/y593Nnmi 

Задачата ми се чупи при етотази проверка и в Judge мидава 60/100

Rooney

1

Junior

2

Paolinio

2

END

 
Тагове:
0
Programming Basics
Eva269 avatar Eva269 10 Точки

Мога да изпратя вярно решение на JS, ако това щ ви помогне.

1
VerginiaM avatar VerginiaM 0 Точки

Може ли да качиш  решението за js , моля ?

0
VerginiaM avatar VerginiaM 0 Точки

Мерси 🙂

0
krum_43 avatar krum_43 658 Точки

В условието никъде не е указано,че при наличие на няколко състезателя с еднакъв брой точки е необходимо да се отпечата само първият играч.

Какво би се случило ако има награда за победителя?

 

 

Ето ти един кратък код на C#::

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Best_Player
{
    class Program
    {
        static void Main(string[] args)
        {
            int maxPoints = Int32.MinValue;
            string bestPlayer = string.Empty;
            while (true)
            {
                string line = Console.ReadLine();
                if (line == "END")
                {
                    Console.WriteLine($"{bestPlayer} is the best player!");
                    if (maxPoints >= 3)
                    {
                        Console.WriteLine($"{bestPlayer} has scored {maxPoints} goals and made a hat-trick !!!");
                    }
                    else
                    {
                        Console.WriteLine($"{bestPlayer} has scored {maxPoints} goals.");
                    }
                }
                else
                {
                    int points = int.Parse(Console.ReadLine());
                    if (points > maxPoints)
                    {
                        bestPlayer = line;
                        maxPoints = points;
                    }
                }
            }                                

        }
    }
}
 

0
22/07/2020 12:30:57
zh.yordanova avatar zh.yordanova 7 Точки

В условието не е указано,но го има в проверките.Моят код отпечатва втория играч като най-добър, но в проверките и в judge най-добрият е първия играч, за това се чудех каква проверка трябва да избира най-добрия.

Благодаря на всички за помоща!

0
krum_43 avatar krum_43 658 Точки

Не знам какъв алгоритъм използваш,но задачата се решава със стандартен алгоритъм за намиране на максимален елемент.

След като първият елемент стане максимален проверката е:

if(currentElement>maxElement).

Taka ako имаме 2 равни максимални елемента вторият няма да бъде таксуван като такъв.

 

Заб.Това е по-скоро неточност в условието,,тъй като е лишено от вскаква логика.

 

 

 

0
23/07/2020 06:07:50
ILTO86 avatar ILTO86 1 Точки

на ред 21 където ти е print-a вместо current_name напиши max_name

и всичко ще е ок

21. print(f'{current_name} is the best player!') това е твоя код

трябва да е така

21. print(f'{max_name} is the best player!')

0