Здравейте. Решавам задача Find Average - Coding Tasks, обаче ми дава 80 точки и не мога да открия грешката. Като цяло не разбирам необходимостта от фор цикъла, но след като се изисква, въобще не знам как да го приложа и каква е логиката. Ако някой може да обясни или да даде примерно решение ще бъда благодарна!
Ето го и кодът:
Здравей, Валерия!
Мисля, че в случая ще ти бъде най-полезно да разгледаш един друг подход при решаването на задачата. Изпращам ти едно възможно решение, разгледай го внимателно и ако имаш въпроси ще се радвам да се опитам да отговоря!
let input = [
'3',
'2.5',
'1.25',
'3'
];
let print = this.print || console.log;
let gets = this.gets || ((arr, indenumOne) => () => arr[indenumOne++])(input, 0);
let numsCount = Number(gets());
let sum = 0;
for (let i = 0; i < numsCount; i++) {
sum += Number(gets());
}
let average = sum / numsCount;
print(average.toFixed(2));
Поздрави,
Иван!
Здравей, благодаря за отговора!
Не разбирам частта с фор цикъла:
for (let i = 0; i < numsCount; i++) {
sum += Number(gets());
}
- До колкото аз разбрах цикълът ще се извърши така:
- пръво се въвежда стойност на вариабъл (let i = 0), после се прави проверката ( i < numsCount), след това взимаме следващо число с гетс(Number(gets())), което в случая е 2.5 и се прави отново проверка за i, но вместо 0, то вече приема стойност 1.
Въпросът ми е какво се случва след това? Отново ли се връща цикъла, прави се проверка и се взима числото 2,5 или продължаваме към следващите (1.25 и 3), понеже цикълът ще се извърши общо 3 пъти, заради броя числа (numsCount)?
- Ако по-горното ми предположение е коректно, то към стойност ‘‘sum’’ би трябвало да се добавят и трите числа (2.5+1.25+3) ?
Благодаря за отговорите, малко са ми болна тема loops.
Да, правилно си разбрала, когато влезем в цикъла i = 0, понеже такава стойност му задаваме първоначално, при първата итерация с Number(gets()); взимаме първия (‘2.5’) стринг от входните данни, парсваме го към число, след което прибавяме неговата стойност към променливата sum и тя става равна на 2,5. При следващата итерация i вече е 1, тъй като на всяка итерация инкрементираме неговата стойност с 1 (i++), но все още е по малко от N и отново влизаме в тялото на цикъла, където този път присвояваме числото 1,25 към sum и нейната стойност става 3,75 и така докато проверката i < numsCount връща true.
Тоест кода, който се намира в тялото на цикъла (между къдравите скоби) ще се изпълнява докато i е по малко от N.
А оператора += означава прибави стойността намираща се отдясно на оператора, към променливата отляво на него. В твоето решение, при всяка итерация ти презаписваш sum с една и съща стойност, а не прибавяш към нея. Дебъгни двата варианта във VS Code, аз лично така най-лесно осъзнавам как работи нещо!
Поздрави,
Иван!
1 Like
Няма за какво и успех на изпита в сряда!
1 Like