Loading...

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

warglaivee avatar warglaivee 59 Точки

02.Dict-Ref Advanced/Advanced Collections

Здравейте, написах решение на въпросната задача, но последните два теста не минават, пренаписах я и мина, но не виждам къде е проблема в този код, ако може някой от екипа да ми предостави последните 2 теста от Judge, за да видя какво не е наред или някой, които намира проблема да сподели къде е, благодаря!

Judge: https://judge.softuni.bg/Contests/Practice/Index/433#1


Условие: http://imgur.com/a/UfgFV

Код: 

using System;
using System.Collections.Generic;
using System.Linq;

namespace _02.Dict_Ref_Advanced
{
    public class Program
    {
        public static void Main()
        {
            var result = new Dictionary<string, List<string>>();
            var input = Console.ReadLine();
            while (input != "end")
            {
                var inputParams = input
                    .Split(new char[] { ' ', '-', '>', ',' }
                    , StringSplitOptions.RemoveEmptyEntries)
                    .ToList();
                var name = inputParams[0];
                var intValues = inputParams.Skip(1).ToList();
                var number = -1;
                var anotherKey = string.Empty;

                foreach (var intValue in intValues)
                {
                    var isInt = int.TryParse(intValue, out number); //if value is given
                    var numToStr = string.Empty;

                    if (isInt)
                    {
                        if (!result.ContainsKey(name)) //save all names as keys
                        {
                            result[name] = new List<string>();
                        }
                        numToStr = number.ToString();
                        result[name].Add(numToStr);
                    }
                    else //if another key is given
                    {
                        var secondKey = intValues[0];
                        if (result.ContainsKey(secondKey)) //if second key dosent exist
                        {
                            if (!result.ContainsKey(name)) //save all names as keys
                            {
                                result[name] = new List<string>();
                            }
                            result[name] = result[secondKey]; // add value to second key
                        }
                    }
                }
                input = Console.ReadLine();
            }
            foreach (var item in result)
            {
                Console.WriteLine($"{item.Key} === {string.Join(", ", item.Value)}");
            }
        }
    }
}

 

Тагове:
0
Module: C# Advanced 30/05/2017 21:28:06
warglaivee:
Обяснение получено.
dimitar9111 avatar dimitar9111 54 Точки
Best Answer

Ами ето така става:

result[name] = result[secondKey]; // add value to second key

го сменяш със:

result[name] = new List<string>(result[secondKey]); // add value to second key

проблема е че листа  е референтен тип данни и

променяйки стойността на единия речник(листа) променяш и тази на другия.

тук добре го е обяснил Иво(към края на видеото беше):

https://softuni.bg/trainings/resources/video/13215/video-screen-07-march-2017-ivaylo-jelev-programming-fundamentals-exended-january-2017

1
31/05/2017 00:37:51
warglaivee avatar warglaivee 59 Точки

Благодаря! Помогна ми наистина.

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