Софтуерно Инженерство
Loading...
+ Нов въпрос
EmoBG avatar EmoBG 2 Точки

Easter Gifts - Retake Mid Exam

Може ли някой да ми каже къде ми е грешката в задачата. Дава 70/100, а не виждам къде може да има грешка...

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

код:

using System;
using System.Linq;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            var gifts = Console.ReadLine().Split().ToList();

            while (true)
            {
                string command = Console.ReadLine();
                if (command == "No Money")
                {
                    break;
                }
                string[] tokens = command.Split().ToArray();
                if (tokens[0] == "OutOfStock")
                {
                    if (tokens.Count() == 2)
                    {
                        for (int i = 0; i < gifts.Count; i++)
                        {

                            if (gifts[i].Contains(tokens[1]))
                            {
                                int index = gifts.IndexOf(tokens[1]);
                                string outOfStockGift = tokens[1];
                                gifts.Remove(tokens[1]);
                                gifts.Insert(index, "None");
                            }
                        }
                    }
                }
                else if (tokens[0] == "Required")
                {
                    if (tokens.Count() == 3)
                    {
                        string gift = tokens[1];
                        int index = int.Parse(tokens[2]);
                        if (index < gifts.Count - 1)
                        {
                            gifts.RemoveAt(index);
                            gifts.Insert(index, gift);
                        }
                    }
                }
                else if (tokens[0] == "JustInCase")
                {
                    if (tokens.Count() == 2)
                    {
                        int indexOfLastGift = gifts.Count - 1;
                        gifts.RemoveAt(indexOfLastGift);
                        gifts.Add(tokens[1]);
                    }
                }
            }
            if (gifts.Contains("None"))
            {
                gifts.RemoveAll(gift => gift == "None");
            }
            Console.WriteLine(string.Join(" ", gifts));
        }
    }
}
 

0
Fundamentals Module
Carry avatar Carry 39 Точки
Best Answer

Здравей, при команда 'Required', проверката на индексите трябва да се коригира. Трябва да са по-големи от 0 и по-малки от дължината на листа. if (index >= 0 && index < gifts.Count). Така би трябвало да даде 100/100.

0
EmoBG avatar EmoBG 2 Точки

Много благодаря!

0