toyShop
Здравейте, реших задачата toyShop от Conditional statements - Lab, обаче в джъдж ми дава 60/100, може би трябва да съкратя нещо в кода или да променя, не знам, хелп ! Прилагам кода отдолу.
https://pastebin.pl/view/735c1975
Оплел си логиката/условието на задачата, липсва много важен 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);
Блгагдаря ти !