JavaBasics/Nested/ 04. New House
Марин и Нели си купуват къща не далеч от София. Нели толкова много обича цветята, че Ви убеждава да напишете програма която да изчисли колко ще им струва, да си засадят определен брой цветя и дали наличния бюджет ще им е достатъчен. Различните цветя са с различни цени.
цвете |
Роза |
Далия |
Лале |
Нарцис |
Гладиола |
Цена на брой в лева |
5 |
3.80 |
2.80 |
3 |
2.50 |
Съществуват следните отстъпки:
- Ако Нели купи повече от 80 Рози - 10% отстъпка от крайната цена
- Ако Нели купи повече от 90 Далии - 15% отстъпка от крайната цена
- Ако Нели купи повече от 80 Лалета - 15% отстъпка от крайната цена
- Ако Нели купи по-малко от 120 Нарциса - цената се оскъпява с 15%
- Ако Нели Купи по-малко от 80 Гладиоли - цената се оскъпява с 20%
От конзолата се четат 3 реда:
- Вид цветя - текст с възможности - "Roses", "Dahlias", "Tulips", "Narcissus", "Gladiolus"
- Брой цветя - цяло число в интервала [10…1000]
- Бюджет - цяло число в интервала [50…2500]
Да се отпечата на конзолата на един ред:
- Ако бюджета им е достатъчен - "Hey, you have a great garden with {броя цвета} {вид цветя} and {останалата сума} leva left."
- Ако бюджета им е НЕ достатъчен - "Not enough money, you need {нужната сума} leva more."
Сумата да бъде форматирана до втория знак след десетичната запетая.
https://pastebin.com/n6NEVmZi
Може ли програмата да бъде написана толкова просто и да работи? В този вариант Judge ми дава 10%.
Мерси!
https://pastebin.com/CKmbj4xc
Но явно имам още грешки!
Явно в Java стринговете не могат да се сравняват с "==", така че може да използваш .equals().
Също така ако в judge ти гърмят нулеви тестове може да се ориентираш по тях като дебъгваш кода.
Стана 100% въпреки че един от тестовете гърми. Мерси за помощта!
Кой тест гърми? Виж дали навсякъде правилно си сложил equals.
Имаше правописна грешна на лалетата. Странно е, че първият вариант го прие за 100 % дори с грешката, после ми даде 90%, а при третия - 100% без правописната грешка.
При един и същ изгърмял тест даде 90%, както и 100%. Може и да има други причини, които не виждам.
Ако трябва да съм честна, нищо не разбрах от последното ти обяснение. :) Но винаги може да си пратиш трите варианта на кода за да "разследваме" какъв е проблема. :)
https://pastebin.com/uVwvmJnS
Дава 100%, но тест 2 гърми. Просто ми се стори много странно.
Zero test #2 (Incorrect answer).
В единия if съм написал една променлива "tullip", докато на двете други места е "tulip".
https://pastebin.com/WEABcaXU
Тук положението е сходно, тест 2 гърми, но получавам 90%. Не си спомням точно какво промених, правописните грешки при лалетата си остава.
https://pastebin.com/v2WKPEk8
Тук всичко е както трябва да е.
Вариант 2 и 3 са напълно разбираеми.
В единия случай грешката е в case, а в другия - в if.
Най-вероятно 7 тест е с лалета, които са по-малко от 80 и за това правописната грешка в if не им пречи(и без да има правописна грешка няма да се влезне в if).
Привет. На упражнението колежката реши задачата с switch / case. Аз се опитвам да я реша if и още един вложен if обаче нещо не ми излиза сметката. Може ли да погледнеш и да погледнеш и да ми посочиш грешката в кода. Ще съм ти благодарен.
function demo (input) {
let type = (input[0]); //вид цветя
let numOfFlowers = Number(input[1]); //брой цветя
let budget = Number(input[2]); //бюджет
let price = 0;
let discount = 0;
if (type == `Roses`) {
price = numOfFlowers * 5
if ( numOfFlowers > 80) {
discount = 0.1
price = price * discount
}
} else if (type == `Dahlias`) {
price = numOfFlowers * 3.80
if (numOfFlowers > 90) {
discount = 0.15
price = price * discount
}
} else if (type == `Tulips`) {
price = numOfFlowers * 2.80
if (numOfFlowers > 80) {
discount = 0.15
price = price * discount
}
} else if ( type == `Narcissus`) {
price = numOfFlowers * 3
if (numOfFlowers < 120) {
discount = 1.15
price = price * discount
}
} else if (type == `Gladiolus`) {
price = numOfFlowers * 2.50
if (numOfFlowers < 80) {
discount = 1.2
price = price * discount
}
}
if (budget >= price) {
console.log(`Hey, you have a great garden with ${numOfFlowers} ${type} and ${(budget >= price).toFixed(2)} leva left.`)
} else {
console.log(`Not enough money, you need ${Math.abs(price > budget).toFixed(2)} leva more.`)
}
}
demo([`Narcissus`, `119`, `360`])
Здравей,
1. console.log(`Hey, you have a great garden with ${numOfFlowers} ${type} and ${(budget >= price).toFixed(2)} leva left.`) трябва да е budget - price
2 console.log(`Not enough money, you need ${Math.abs(price > budget).toFixed(2)} leva more.`) трябва да е price - budget и като вадиш цената от бюджета, а не бюджета от цената, ath.abs е излишно.
3. Смяташ грешно цената с отстъпката при първите 3 вида цветя. Както е написано в момента трябва да е price -= price * discount. Може и да се смята както го смяташ при нарцисите и гладиолите:
За розите - > discount = 0.9; price = price * discount
За далиите и лалетата - > discount = 0.85; price = price * discount
Ако трябва да добавяш процента(да кажем 20%) се смята: price *1.2(1.2 се смята -> 1 + 20/100). Ако трябва да го вадиш: price *0.8(0.8 се смята 1 - 20/100)
Освен това е добре да слагаш където трябва точка и запетая(;). Също и да си форматираш кода. Ако ползваш VS code може да пробваш с shift + alt + f за да ти го форматира автоматично.
Мерси!