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

1. Sum Adjacent Equal Numbers

Привет,

 

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

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

 

https://pastebin.com/ChnKYYpt

Тагове:
0
C# Fundamentals
kkaraivanov avatar kkaraivanov 263 Точки
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 0 Точки

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

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

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

0
kkaraivanov avatar kkaraivanov 263 Точки

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

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

        break;

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

0
Nikodon avatar Nikodon 0 Точки

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

0