Софтуерно Инженерство
Loading...
Icakiss avatar Icakiss 0 Точки

01. Disneyland Journey MID EXAM

    function solve(arr) {
        let costNeeded = +arr.shift()
        let months = +arr.shift()
        let sum = 0
        let percentage = costNeeded * 0.25

        for (let i = 1; i < months; i++) {
            let bonus = sum * 0.25
            if (i % 4 == 0) {
                sum += bonus
            }

            if (i % 2 == 1 && i >= 2) {
                sum -= sum * 0.16
            }

            sum += percentage

            if (sum >= costNeeded) {
                console.log(`Bravo! You can go to Disneyland and you will have ${(sum - costNeeded).toFixed(2)}lv. for souvenirs.`)
                return
            }

        }
        let more = costNeeded - sum
        console.log(`Sorry. You need ${more.toFixed(2)}lv. more.`)
    }

Тва е моя код. Дава ми 40 от 100

Задачата е от: Programming Fundamentals Mid Exam Retake - 10 December 2019

https://judge.softuni.bg/Contests/Practice/Index/1958#0

 

0
JavaScript Fundamentals 03/03/2020 11:56:06
svephoto avatar svephoto 277 Точки

Здравей,

 

Трябва да добавиш знак за равенство след знака за по-малко (<) в условието на for-цикъла

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

и след това да извадиш този блок от код

if (sum >= costNeeded) {
    console.log(`Bravo! You can go to Disneyland 
and you will have ${(sum - costNeeded).toFixed(2)}lv. for souvenirs.`)
return
}

извън/след цикъла, като трябва да махнеш

return-а

и да поставиш в else {} другия изход:

else {
    console.log(`Sorry. You need ${more.toFixed(2)}lv. more.`)
}

С тези корекции би трябвало да вземеш 100/100. Ако имаш още затруднения, пиши къде и какви са, и пак ще помагаме.

 

Успех!

0
03/03/2020 12:34:39
Icakiss avatar Icakiss 0 Точки

Благодаря!!!

 

Даде: 100/100

0
06/03/2020 11:59:14
svephoto avatar svephoto 277 Точки

Супер! Моля и честито. :-)

0
nikolairalev avatar nikolairalev 1 Точки

 Аз го правя точно както казвате и пак е 40/100

money_need = float(input())
months = int(input())

current_money = 0.00

for m in range(1, months + 1):
    if m % 2 != 0 and m != 1:
        current_money *= 0.84
    elif m % 4 == 0:
        current_money *= 1.25
        if current_money >= money_need:
            break
    current_money += money_need * 0.25
    if current_money >= money_need:
        break

if current_money >= money_need:
    print(f'Bravo! You can go to Disneyland and you will have {current_money - money_need:.2f}lv. for souvenirs.')
else:
    print(f'Sorry. You need {money_need - current_money:.2f}lv. more.')
0
svephoto avatar svephoto 277 Точки

Здравей, nikolairalev, виж какво ще стане, ако махнеш частите от кода, в които правиш break - имаш 2 такива места с един и същи блок от код:

        if current_money >= money_need:
            break

Можеш, ако искаш, първо просто да ги закоментираш и да пуснеш решението в Judge. Ако пак нещо не ти се получава, кажи и ще помагаме отново.

Успех!

0
nikolairalev avatar nikolairalev 1 Точки

Благодаря за отзивчивостта,

Да след като махнах break прекъсванията получих желаните 100/100. Бях ги сложил, защото разбрах задачата като да спра веднага след като събера парите.

Но сега като чета отново:

"If you save enough money for the journey, calculate how much money will be left for the souvenirs. Then print the following:"

Наистина не е ясно казано, така че трябваше да пробвам и двата начина.

:)

0
svephoto avatar svephoto 277 Точки

Моля!

Да, когато нещо не е изрично посочено в условието, не е нужно да го правим. И на мен ми се е случвало и сигурно още много пъти ще ми се случва, но така се учим.

0