Loading...
RaUndreundre avatar RaUndreundre 54 Точки

01. Registration - Exam Preparation C#

Имам малък проблем с тази задача: 01. Registration - Exam Preparation C#

https://judge.softuni.org/Contests/Practice/Index/4778#0

При case"Substring": се иска да премахнем даденият подстринг, ако има такъв.

Като използвам Replace, резултата е 100/100.

Но ако използвам Remove резултата е  90/100.

Правих му проверка if(..., пробвах и while в if, но резултата си е същия - първи тест излиза с грешен резултат.

Качил съм един от опитите. (Вътре имам закоментиран работещ вариант с Replace)

https://pastebin.com/xCzesvvy

 

Тагове:
0
C# Fundamentals 30/03/2025 23:36:11
dimitarglavianov avatar dimitarglavianov 114 Точки

Здравей , ето това е твоето решение с Remove за 100/100

 

namespace _1__
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string input = Console.ReadLine();
            string command = string.Empty;
            while ((command = Console.ReadLine()) != "Registration")
            {
                string[] cmd = command.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                switch (cmd[0])
                {
                    case "Letters":
                        if (cmd[1] == "Upper")
                        {
                            input = input.ToUpper();
                        }
                        else
                        {
                            input = input.ToLower();
                        }
                        Console.WriteLine(input);
                        break;
                    case "Reverse":
                        int startInx = int.Parse(cmd[1]);
                        int endInx = int.Parse(cmd[2]);
                        if (startInx >= 0 && endInx < input.Length && startInx <= endInx)
                        {
                            Console.WriteLine(string.Join("", input.Substring(startInx, (endInx - startInx + 1)).Reverse()));
                        }
                        break;
                    case "Substring":
                        if (input.Contains(cmd[1]))
                        {
                            while (input.Contains(cmd[1]))
                            {
                                input = input.Remove(input.IndexOf(cmd[1]), cmd[1].Length);
                                Console.WriteLine(input);
                            }
                        }
                        //input = input.Replace(cmd[1], "");
                        else
                        {
                            Console.WriteLine($"The username {input} doesn't contain {cmd[1]}.");
                        }
                        break;

                    case "Replace":
                        if (input.Contains(cmd[1]))
                        {
                            input = input.Replace(cmd[1], "-");
                            Console.WriteLine(input);
                        }
                        break;
                    case "IsValid":
                        if (input.Contains(cmd[1]))
                        {
                            Console.WriteLine("Valid username.");
                        }
                        else
                        {
                            Console.WriteLine($"{cmd[1]} must be contained in your username.");
                        }
                        break;
                    default:
                        break;
                }
            }
        }
    }
}

Разликата е че не използваше дължината на командата 

cmd[1].Length

,когато премахваш, а това 

cmd.Length

което е дължината на масива с командите.
Тъпото е че в Judge работи и така 

input = input.Remove(input.IndexOf(cmd[1]), cmd.Length + 1);

 което изобщо не е добре smiley

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