Професионална програма
Loading...
Naydenow avatar Naydenow 0 Точки

toyShop

Здравейте, реших задачата toyShop от Conditional statements - Lab, обаче в джъдж ми дава 60/100, може би трябва да съкратя нещо в кода или да променя, не знам, хелп ! Прилагам кода отдолу.

https://pastebin.pl/view/735c1975


 

Тагове:
mttnu avatar mttnu 82 Точки
Best Answer

 

Оплел си логиката/условието на задачата, липсва много важен if (дали печалбата е достатъчна), има повторения на няколко места (на ред 6, 7, 8, 11, 12, 13 реално правиш едно и също нещо). Използвай малко по-описателни и не чак толкова съкратени имена на променливите. Разликата между toysPrc и toysPrice е две букви, но второто е много по-разбираемо.

 

Ето едно примерно решение, със сравнително описателни коментари към редовете, кое - какво прави.

function toyShop(vac, puzz, doll, bear, mini, truck) {
    let toysPrice =
        Number(puzz) * 2.6 +
        Number(doll) * 3 +
        Number(bear) * 4.1 +
        Number(mini) * 8.2 +
        Number(truck) * 2;
    let toysSum =
        Number(puzz) +
        Number(doll) +
        Number(bear) +
        Number(mini) +
        Number(truck);

    let vacationCost = Number(vac); // Изваждане на нужната сума в отделна променлива, за да е по-четимо, разбираемо и да не се ползва Number(vac) на n места, което от стоя страна намаля и вероятността за грешки.. 
    let rentPercent = 0.1; // Деклариране на процента за наем по условие, и който се приспада от печалбата.
    let profit = toysPrice - toysPrice * rentPercent; // Деклариране на печалбата, която първоначално винаги е печалбата от играчките минус наема.

    if (toysSum >= 50) { // Проверка, която определя дали ще има отстъпка.
        let discountPercent = 0.25; // Деклариране на отстъпката. Променливата е декларирана тук, защото е необходима само тук, в този скоуп.
        profit = profit - profit * discountPercent; // Презаписване на profit променливата -> стара цена - отстъпка.
    }

    let difference = Math.abs(profit - vacationCost).toFixed(2); // Пресмятане на разликата между печалбата и необходимата сума по условие. Math.abs връща модула на даден резултат - разликата винаги е положително число. Променливата се декларира тук, за да имаме достъп до нея от if и else блока, без да пишем едно и също нещо два пъти.

    if (profit >= vacationCost) { // Проверка, която определя дали настоящата стойност на печалбата (след изваден наем, отстъпки и т.н.) е достатъчна. (Това тотално липсваше в твоя код.)
        console.log(`Yes! ${difference} lv left.`);
    } else {
        console.log(`Not enough money! ${difference} lv needed.`);
    }
}
// toyShop("320", "8", "2", "5", "5", "1");
// toyShop("40.8", "20", "25", "30", "50", "10");
// toyShop(20, 8, 2, 5, 5, 1);

 

0
17/09/2020 13:00:36
Naydenow avatar Naydenow 0 Точки

Блгагдаря ти ! 

0