Профил
Loading...
+ Нов въпрос
sevdalin avatar sevdalin 38 Точки

[C# OOP Basics] 06. **Football Team Generator

Здравейте,

някой може да удари едно рамо за тази задача. Не знам какво не правя като хората. Всичките валидации си правя, ако нямам Team, ако нямам Player, и т.н., но ми дава 16/100, което е плачевно. Някъде нещо голямо куца, но не намирам нищо. Дори я направих, да работи с много Team-ове, защото в примерните тестове се подава само 1 Team  в началото, ама аз не съм сигурен, че ще бъде така и в тестовете.

 

Постарах се доста, направих си енкапсулацията правилно. Проблема, който срещнах беше с един field "rating" в Class FootballTeam, който не успях да напиша така, че да не го включвам в конструктора, ами да си определя стойността използвайки метод, всеки път щом поискам get на полето. Правеше ми една грешка, която не успях да оправя и за това кода е закоментиран и ползвам директно метода от класа.

 

Тук може да видите условието на задачата: https://judge.softuni.bg/Contests/Practice/Index/232#0

Тук е кода ми, събран в един Pastebin

 

Дано някой да успее да види какво греша. Или аз не разбирам нещо в условието, което после ми се подава като данни. Давайте input, който да тествам със задачата, защото според мен всичко би трябвало да си мине. Ама само според мен, не и според Judge.

 

Тагове:
0
C# OOP Basics 06/06/2017 11:14:20
gogo4ds avatar gogo4ds 1 Точки

Ще нахвърлям няколко грешки които виждам на пръв поглед.

1. Не трябва с Math.Ceiling да смяташ Average, защото той не ти връща най-близкия integer, пробвай с Math.Round или си ги смятай с double и чак накрая като принтираш рейтинга му дай формат {Rating:F0}

2.Първия път ако ти се подаде празно име на отбор, никъде не хващаш грешката

3.Ако във FindFootballTeamIndex не намери индекс и ти върне -1? Ти  после директно казваш footballTeams[footballTeamIndex].AddPlayer(player); Нищо не пречи да ти кажат да добавиш играч в отбор, който го няма..

и за протокола само - няма значение дали има празно място след края на изречението, judge Trim-ва реда. Също така string.IsNullOrWhiteSpace() e подобрена версия на string.IsNullOrEmpty() и хваща същите неща + само space-ове, така че няма нужда и него да пишеш

0
AsenVolev avatar AsenVolev 8 Точки

Не става това с rating:F0 аз също съм забил жестоко на тази задача и ми дава 80 вместо 81 пробвах и със ceiling, и с Мath.Round(double, MidPointRounding.AwayFromZero) и все и пак неще ....

0
gadjov avatar gadjov 115 Точки

Ето го моето пропърти Рейт

public double Rating
        {
            get => this._rating;
            set
            {
                var average = (this.Players.Sum(p => p.Dribble) + 
                this.Players.Sum(p => p.Endurance) +
                this.Players.Sum(p => p.Passing) + 
                this.Players.Sum(p => p.Shooting) +
                this.Players.Sum(p => p.Sprint)) / 5.0;

                this._rating = Math.Round(average);
            }
        }

 

0
06/07/2017 01:42:00