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

1. Sum Adjacent Equal Numbers

Привет,

 

решението ми дава 70/100, не знам къде бъркам и какво още трябва да променя за да взема 100/100.

Ако може малко помощ ще съм благодарен

 

https://pastebin.com/ChnKYYpt

Тагове:
0
Module: C# Advanced
kkaraivanov avatar kkaraivanov 486 Точки
Best Answer

Ето промяна в кода ти, мисля че ще се получи

for (int i = 0; i < numbers.Count; i++)
{
    int nextIndex = 0;
    if (i + 1 > numbers.Count - 1)
        break;
    else
        nextIndex = i + 1;

    if (numbers[i] == numbers[nextIndex])
    {
        numbers[i] += numbers[nextIndex];
        numbers.RemoveAt(nextIndex);
        i = -1;
    }
}

Имай в предвид, когато декларираш променлива в тялото на цикъл тя не ти пази стойностите които ти трябват. В кода си double sum = numbers[i] += numbers[i + 1];  прави някакво изчисление, но когато  цикълът се завърти и if проверката не се изпълнява, тази променлива няма да можеш да я използваш. Другото в задачата, което предполагам те обърква е, че стойностите за сумиране и премахване от списъка ги имаш от входа и за да получиш решение е необходимо де боравиш с индексите в списъка, а не със самите стойности. Когато ползваш масиви, трябва да си на "щрек" да неизлезнеш от масива и затова ако в условието не е посочено че стойностите ще са винаги в масива, направи проверка за препълване или за отрицателен индекс, след което направи изчислението.

0
15/02/2020 02:40:34
Nikodon avatar Nikodon 3 Точки

Благодаря ти, отново много ми помогна.

Искам да попитам, защо въртим цикъла до numbers.count , a не до numbers.count - 1, т.е до последният му елемент?

Тогава нали не би трябвало да проверяваме дали i + 1 > numbers.count ?

0
kkaraivanov avatar kkaraivanov 486 Точки

Проверката я правим защото масива динамично променя големината си и това парче код

if (i + 1 > numbers.Count - 1)

        break;

казва на програмата, че в масива можем да имамае най малко 1 елемент и когато достигнем тази големина, за да не препълним масива цикълът няма да се изпълни. Цикълът се върти до  numbers.count защото започвайки от индекс 0, правим точно толкова цикъла, колкото е голям масива. numbers.count -1 ще ти върне предпоследния елемент от масива.

0
Nikodon avatar Nikodon 3 Точки

Благодаря ти! Беше ми много полезно !

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