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

03. Guild C# Advanced Exam - 22 Feb 2020

Здравейте колеги.

Имам нужда от помощ с тази задача.

https://judge.softuni.bg/Contests/Practice/Index/2032#2 

Judge дава 91/100. Прегледах подобни запитвания от колеги и не намирам разликата в решението освен това ,че съм избрал Dictionary за roster. Иска ми се да не я пренаписвам с List , а да разбера къде е проблема.

Това са мойте класове:

Guild.cs https://pastebin.com/m6urz6tL
Player.cs https://pastebin.com/dtETa6EA

Благодаря предварително.

Тагове:
0
C# Advanced
Axiomatik avatar Axiomatik 1371 Точки

When judge gives out 91/100 for class-exercises, that usually is a sign that some private/protected/internal access modifiers are missing.

Try out the following and see if judge gives 100%:

Player class

        public string Name { get; private set; }

        public string Class { get; private set; }

        public string Rank { get; internal set; }

        public string Description { get; set; }

Guild class

        public string Name { get; private set; }

        public int Capacity { get; private set; }

 

Best,

 

 

1
StoilDimitrov avatar StoilDimitrov 0 Точки

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

0
Axiomatik avatar Axiomatik 1371 Точки

Then it must be one of the Guild-methods, try:

            // if (Capacity>Count && !roster.ContainsKey(recruit.Name))
            // probably trigger OutOfRange Exception, since Count must not exceed Capacity
            if (Count < Capacity && !roster.ContainsKey(recruit.Name))
            {
                roster.Add(recruit.Name, recruit);
            }

 

0
17/02/2021 11:48:22
Axiomatik avatar Axiomatik 1371 Точки

Or TrimEnd() is missing in Report-method:

       public string Report()
        {
            string output = $"Players in the guild: {Name}";
            if (roster.Count>0)
            {
                foreach (var player in roster)
                {
                    output += Environment.NewLine + player.Value.ToString() + Environment.NewLine;
                }
            }
            return output.TrimEnd();
        }

 

0
petzata avatar petzata 14 Точки

Здравейте, грешката е в метода Report, във foreach цикъла трябва да се промени: 

   output += Environment.NewLine + player.Value;

и след това:

return output.ToString().TrimEnd();

 

Ако стартирате задачата без да е поправена ще разберете че метода Report връща не това, което е дадено в примера за StartUp.

0
petzata avatar petzata 14 Точки

Мисля че, ако за колекция вместо речник използвате лист примерно, задачата става доста по- лесна и четима.

0