Loading...

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

EmoBG avatar EmoBG 2 Точки

Dictionary (Demo exam)

условие: https://judge.softuni.bg/Contests/Practice/DownloadResource/5507

Може ли малко помощ с решението на задачата. Вчера на демо изпита я докарах до 60/100.

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

class Tech_Module
{
    static void Main()
    {
        List<string> firstString = Console.ReadLine().Split(" | ").ToList();
        List<string> secondString = Console.ReadLine().Split(" | ").ToList();
        string thirdString = Console.ReadLine();

        Dictionary<string, string> wordAndDescription = new Dictionary<string, string>();
        firstString.Sort();
        for (int i = 0; i < firstString.Count; i++)
        {
            string[] currentLine = firstString[i].Split(": ").ToArray();
            string word = currentLine[0];
            string description = currentLine[1];
            if (!wordAndDescription.ContainsKey(word))
            {
                wordAndDescription.Add(word, description);
            }
            else
            {
                wordAndDescription[word] = description;
            }
        }

        if (thirdString == "List")
        {
            foreach (var kvp in wordAndDescription)
            {
                Console.Write($"{kvp.Key} ");
            }
        }
        else if (thirdString == "End")
        {
            foreach (var kvp in wordAndDescription)
            {
                if (wordAndDescription.ContainsKey(kvp.Key) && wordAndDescription.ContainsValue(kvp.Value))
                {
                    Console.WriteLine($"{kvp.Key}");
                    Console.WriteLine($" -{kvp.Value}");
                }               
            }
        }

    }
}

0
Fundamentals Module 07/04/2019 14:39:40
Sad_homecoming avatar Sad_homecoming 135 Точки
Best Answer

Решението ти е много объркано, не разбирам защо взема 60точки изобщо. Забеляза ли, че единия от нулевите тестове не го минава?

Първо ти трябва Dictionary<string, List<string>>(); една дума има няколко описания, т.е думата ти е стринг ключа, а описанията се вкарват в списъка от стрингове.

firstString.Sort();

- това с каква цел го правиш?! 

   foreach (var kvp in wordAndDescription)
            {
                if (wordAndDescription.ContainsKey(kvp.Key) && wordAndDescription.ContainsValue(kvp.Value))
                {
                    Console.WriteLine($"{kvp.Key}");
                    Console.WriteLine($" -{kvp.Value}");
                }    

с тази if проверка общо взето проверяваш дали  дума от речника и я има в речника (явно я има нали от там я вземаш), съответно и за описанието.

        else if (thirdString == "End")
        {
            foreach (var kvp in wordAndDescription)
            {
                if (wordAndDescription.ContainsKey(kvp.Key) && wordAndDescription.ContainsValue(kvp.Value))
                {
                    Console.WriteLine($"{kvp.Key}");
                    Console.WriteLine($" -{kvp.Value}");
                }               
            }
        }

в условието казват If the command is "End", you should break the program. (програмата спира, край..)

 

Ето ти решение : https://pastebin.com/rXE4TYZL , ако не разбираш нещо питай

0
EmoBG avatar EmoBG 2 Точки

Мерси за обясненията!  Не съм бил разбрал условието на задачата правилно.., и не съм решавал много задачи с речници.

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