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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.