[Programming Fundamentals] 2. Track Downloader
Колеги, къде бъркам? Дава ми 30/100.
Колеги, къде бъркам? Дава ми 30/100.
Едната грешка е, че когато изтриваш елемента не връщаш цикъла с едно и по този начин пропускаш един елемент.
трябва да вмъкнеш i=i-1; при всяко триене.
Какво става обаче, ако foreacha продължи да върти след като е изтрил елемента? Задължително трябва да има и край на цикъла след триене:
for (int i = 0; i < addons.Count; i++)
{
foreach (string t in blacklist)
{
if (addons[i].Contains(t))
{
addons.Remove(addons[i]);
i = i - 1; // Връщаме назад цикъла, след като има с един елемент по-малко
break; // Прекъсваме foreach за да не поиска например елемент на -1 индекс и да обърка логиката
}
}
}
Дай правилното решение, това което си дал е от друга задача :Д
haha да, sorry, колега, сложих правилното вече :)
поправеното решение - разбира се примерно но минава със 100 / 100, може да се оптимира..
damn, прав си, аз се чудя що прескача..
След като изтрием елемент и върнем цикъла break служи за да прекъснем foreach, за да не поиска случайно елемента на -1 индекс в масива( ако се натъкнем на случая в който i e било 0 и ние сме го върналио с едно назад)