Loading...
kostadin9009 avatar kostadin9009 3 Точки

Задача 7 от Sets and Dictionaries Advanced - Lab

Здравейте, колеги ! Може ли малко помощ за следната задача: https://judge.softuni.bg/Contests/Practice/Index/1465#6

По долу е решението ми, което взема 80/100 в judge. Ако може да ми кажете къде греша, тъй като тествах какви ли не варианти и всичко си работи. Първо реших задачата с hashset, после се усетих, че може да подадат повече от един еднакъв номер и я направих с лист, но резултата е пак 80/100. 

https://pastebin.com/yiKPJ8Ue

 

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

Can't test the solution, but for some exercises in C#-Avanced it was necessary to set the input with ToUpper/ToLower depending on the situation. Rewrote some parts of the code, hope this helps.

Code:

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

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var regularGuests = new List<string>();
            var vipGuests = new List<string>();
            string input = Console.ReadLine();
            int count = 0;

            while (input.ToUpper() != "PARTY")
            {
                //if (input == "END")
                //{
                //    count = vipGuests.Count + regularGuests.Count;
                //    Console.WriteLine(count);
                //    foreach (var guest in vipGuests)
                //    {
                //        Console.WriteLine(guest);
                //    }
                //    foreach (var guest in regularGuests)
                //    {
                //        Console.WriteLine(guest);
                //    }
                //    return;
                //}
                //if (input.Length == 8 && (input[0] >= 48 && input[0] <= 67))
                char firstChar = input[0];
                if (char.IsDigit(firstChar))
                {
                    if (!vipGuests.Contains(input))
                    {
                        vipGuests.Add(input);
                    }
                }
                //else if (input.Length == 8)
                else
                {
                    if (!regularGuests.Contains(input))
                    {
                        regularGuests.Add(input);
                    }
                }

                input = Console.ReadLine();
            }

            input = Console.ReadLine();

            while (input.ToUpper() != "END")
            {
                if (vipGuests.Contains(input))
                {
                    vipGuests.Remove(input);
                }
                else if (regularGuests.Contains(input))
                {
                    regularGuests.Remove(input);
                }
                input = Console.ReadLine();
            }
            count = vipGuests.Count + regularGuests.Count;
            Console.WriteLine(count);
            foreach (var guest in vipGuests)
            {
                Console.WriteLine(guest);
            }
            foreach (var guest in regularGuests)
            {
                Console.WriteLine(guest);
            }
        }
    }
}

0
kostadin9009 avatar kostadin9009 3 Точки

Thank you very much! 

0
Serggo84 avatar Serggo84 1 Точки

Здравей,

Не знам защо решаваш задачата по този начин, след като идеята е да упражниш Set. Ето ти моето решение:

using System;
using System.Collections.Generic;

namespace _07._SoftUni_Party
{
    class Program
    {
        static void Main(string[] args)
        {
            HashSet<string> set = new HashSet<string>();
           
            while (true)
            {
                string commands = Console.ReadLine();
                if (commands=="PARTY")
                {
                    break;
                }
                set.Add(commands);
            }
            while (true)
            {
                string input = Console.ReadLine();
                if (input=="END")
                {
                    break;
                }
                if (set.Contains(input))
                {
                    set.Remove(input);
                }
            }
            Console.WriteLine(set.Count);
            foreach (var item in set)
            {
                char[] ch = item.ToCharArray();
                if (char.IsDigit(ch[0]))
                {
                Console.WriteLine(item);
                }
            }
            foreach (var item in set)
            {
                char[] ch = item.ToCharArray();
                if (char.IsLetter(ch[0]))
                {
                    Console.WriteLine(item);
                }
            }
        }
    }
}
 

0
kdew0 avatar kdew0 8 Точки
using System;
using System.Collections.Generic;

namespace SoftUniParty
{
    class Program
    {
        static void Main(string[] args)
        {
            string hashCode = Console.ReadLine();
            HashSet<string> people = new HashSet<string>();
            HashSet<string> toBePrinted = new HashSet<string>();

            while (!hashCode.ToLower().Contains("end"))
            {
                if (hashCode.ToLower().Contains("party"))
                {
                    hashCode = Console.ReadLine();

                    while (people.Contains(hashCode))
                    {
                        if (hashCode.ToLower().Contains("end"))
                        {
                            break;
                        }

                        people.Remove(hashCode);
                        hashCode = Console.ReadLine();
                    }
                }
                else
                {
                    people.Add(hashCode);
                    hashCode = Console.ReadLine();
                }
            }

            Console.WriteLine(people.Count);
            foreach (string person in people)
            {
                if (char.IsDigit(person[0]))
                {
                    Console.WriteLine(person);
                }
                else
                {
                    toBePrinted.Add(person);
                }
            }

            foreach (string person in toBePrinted)
            {
                Console.WriteLine(person);
            }
        }
    }
}

 

0
Martinchoto avatar Martinchoto 2 Точки

HashSet<string> regulars = new HashSet<string>();
HashSet<string> VIPs = new HashSet<string>();
string command;
while ((command = Console.ReadLine()) != "PARTY")
{
    char firstLetter = command[0];
    if (char.IsDigit(firstLetter))
    {
        VIPs.Add(command);
    }
    else
    {
        regulars.Add(command);
    }
}
while ((command = Console.ReadLine()) != "END")
{
    if (regulars.Contains(command) || VIPs.Contains(command))
    {
        regulars.Remove(command);
        VIPs.Remove(command);
    }
}
int count = VIPs.Count + regulars.Count;
Console.WriteLine(count);
foreach (var vip in VIPs)
{
    Console.WriteLine(vip);
}
foreach (var regular in regulars)
{
    Console.WriteLine(regular);
}

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