Help with code?

Този https://jsfiddle.net/azcbrmkf/ код ми даде 20 точки. Ето условието https://learn.telerikacademy.com/mod/page/view.php?id=5309.

Може ли помощ?

Първо: Ще те посъветвам да пускаш for цикъл до

let n = +gets();

Когато го пускаш до input.lenght може да ти създаде проблеми.

Второ: Проблемът ти идва от самото пресмятане на отстъпката.
Трябва да вземеш елемент и да го разделиш на 100 и след това умножаваш по 35.

print((+gets()/100*35).toFixed(2));

По този начин, с тази формула “input[i] * 0.35” резултат ти е невалиден защото .toFixed(2) закръгля резултат ако имаш повече от две числа след запетаята. Защо го закръгля грешно по този начин:
Можеш да прочетеш ето тук: https://www.techonthenet.com/js/number_tofixed.php

1 Like

Не разбрах първата част от отговора ти? Ако пусна цикъла по n(for (var i = 1; i < n; i++)), n е само първият инпут.

Здравей,
предполагам, че идеята на колегата е да вземеш първото число n и да завъртиш for loop от 0 до n, в чиято логика да пълниш примерно един масив. Аз бих постъпил така. След това завърташ втори for по дължината на получения масив и следователно прилагаш останалата логика. За пресмятането на отстъпката колегата е прав.

1 Like

Здравей, може ли примерен код за да видя как се завърта такъв loop и пълни масив по този начин, защото не успях сам?

Здравей,
https://pastebin.com/pddA6Fx8 това е примерния код. Идеята му е, че първото число, което имаш на входа го записваш в n с +gets(). Така for цикъла ще се завърти n пъти и на всяко завъртане добявяш едно число в края на масива отново с +gets().

1 Like

var n = +gets(); // За това, просто като съвет!

for (let i = 1; i <= n; i++)
{
var result = (+gets()/100*35);
print(result.toFixed(2));
};

Имах предвид, да изкараш n като променлива до която ще се върти for-a, а не да използваш input.length и да започваш for-a от 1. В условието ти пише, че на първият ред ще получиш броя следващи редове.

Ако имаш

let input =
[
2,
50,
40
];

input.length ще е равно на 3, а for-a трябва да ти е до 2.
Първото число показва колко реда следват.
Затова вземаш първото число

var n = +gets()

Така вземаш първото число и пускаш for до него.

for (let i = 1; i <= n; i++)

Сега в input ти остава 20 и 50 само двете числа които ще смяташ
и на всяка итерация на for-a вземаш следващото число с +gets()

1 Like

И все пак не забравяй да обърнеш повече внимание на алгоритъма за решаването на задача и да прочетеш този материал за toFixed() който ти постнах.
Ще ти е полезен доста.

1 Like

https://jsfiddle.net/wvnjur19/3/ Сто точки!

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

1 Like

По доста сложен начин си го направил ама щом работи не го бараме :smiley:

2 Likes