Loading...
NikolayNeykov92 avatar NikolayNeykov92 617 Точки

При махането на играчи не спираш foreach цикъла и съответно се опитваш да премахнеш премахнат играч отново.

Ето поправка:

 

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

namespace SoftUni
{
    class Program
    {
        //https://soundcloud.com/g_dogg/sets/otvoriochenie

        static void Main(string[] args)
        {
            string input = "";


            var eachplayer = new Dictionary<string, Dictionary<string, int>>();


            while ((input = Console.ReadLine()) != "Season end")
            {

                var tokens = new List<string>();

                if (input.Contains(" -> "))
                {
                    tokens = input.Split(new char[] { '-', '>' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                    string player = tokens[0].Trim();
                    string position = tokens[1].Trim();
                    int skill = int.Parse(tokens[2]);


                    if (!eachplayer.ContainsKey(player))
                    {
                        eachplayer.Add(player, new Dictionary<string, int>());
                    }

                    if (!eachplayer[player].ContainsKey(position))
                    {
                        eachplayer[player][position] = skill;
                    }
                    if (skill > eachplayer[player][position])
                    {
                        eachplayer[player][position] = skill;
                    }

                }
                else if (input.Contains(" vs "))
                {
                    tokens = input.Split(new string[] { "vs" }, StringSplitOptions.RemoveEmptyEntries).ToList();

                    string firstplayer = tokens[0].Trim();
                    string secondplayer = tokens[1].Trim();


                    if (eachplayer.ContainsKey(firstplayer) && eachplayer.ContainsKey(secondplayer))
                    {
                        ////DUEL///

                        var firstPlayerPosition = eachplayer[firstplayer].Keys.ToList();

                        var secondPlayerPosition = eachplayer[secondplayer].Keys.ToList();

                        bool removedPlayer = false;
                        foreach (var first in firstPlayerPosition)
                        {
                            foreach (var second in secondPlayerPosition)
                            {
                                if (first == second)
                                {
                                    var firstplayertotalskill = eachplayer[firstplayer].Values.Sum();
                                    var secondplayertotalskill = eachplayer[secondplayer].Values.Sum();

                                    if (firstplayertotalskill > secondplayertotalskill)
                                    {
                                        eachplayer.Remove(secondplayer);
                                        removedPlayer = true;
                                        break;
                                    }
                                    else if (secondplayertotalskill > firstplayertotalskill)
                                    {
                                        eachplayer.Remove(firstplayer);
                                        removedPlayer=true;
                                        break;
                                    }

                                }
                            }
                            if (removedPlayer)
                            {
                                break;
                            }
                        }
                    }
                }

            }


            foreach (var player in eachplayer.OrderByDescending(x => x.Value.Values.Sum()).ThenBy(x => x.Key))
            {
                Console.WriteLine($"{player.Key}: {player.Value.Values.Sum()} skill");

                foreach (var position in player.Value.OrderByDescending(x => x.Value).ThenBy(x => x.Key))
                {
                    Console.WriteLine($"- {position.Key} <::> {position.Value}");
                }
            }


        }


    }
}

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.