Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

iliyantenev avatar iliyantenev 4 Точки

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%.

Тагове:
0
Programming Basics with Java
knoteva avatar knoteva 1081 Точки

Има няколко неща:

1.  Ако Нели купи по-малко от 120 Нарциса - цената се оскъпява с 15%; Ако Нели Купи по-малко от 80 Гладиоли - цената се оскъпява с 20%

2.  Ако бюджетът е достатъчен трябва да се сметне останалата сума форматирана до втория знак след десетичната запетая.

3. Проверките за Roses > 80 и т.н са ти грешни. Навсякъде трябва да проверяваш дали flowernum > 80 , а не Roses , което е равно на 5(аналогично и за останалите цветя). Можеш да сложиш всяка проверка в съответния case: case "Roses": price = flowernum * Roses; if (flowernum > 80) { price *= 0.90; } break; или ако правиш проверките след switch-а: if (flowernum > 80  && typeofFlower == "Roses" typeofFlower.equals("Roses")) {

0
26/02/2019 18:57:50
iliyantenev avatar iliyantenev 4 Точки

Мерси!

https://pastebin.com/CKmbj4xc

Но явно имам още грешки!

 

0
26/02/2019 17:10:34
knoteva avatar knoteva 1081 Точки

Явно в Java стринговете не могат да се сравняват с "==", така че може да използваш .equals().

Също така ако в judge ти гърмят нулеви тестове може да се ориентираш по тях като дебъгваш кода. 

0
26/02/2019 18:41:55
iliyantenev avatar iliyantenev 4 Точки

Стана 100% въпреки че един от тестовете гърми. Мерси за помощта!

0
yovkovbpfps avatar yovkovbpfps 8 Точки

import java.util.Scanner;

public class u3_NewHouse {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        String flower = scanner.nextLine();
        int countFlower = Integer.parseInt(scanner.nextLine());
        double budget = Double.parseDouble(scanner.nextLine());

        double result = 0;
        double difference = 0.0;
        double roses = countFlower * 5;
        double dahlia = countFlower * 3.8;
        double tulips = countFlower*2.8;
        double narcissus = countFlower*3;
        double gladiolus = countFlower*2.5;

 

        if (flower.equalsIgnoreCase("Roses")) {
            if (countFlower>80) {
                result = roses-(roses*0.1);
            }else if(countFlower<=80){
                result = roses;
            }
        }
        if (flower.equalsIgnoreCase("Dahlias")) {
            if(countFlower>90){
                result = dahlia-(dahlia*0.15);
            } else if (countFlower<=90) {
                result = dahlia;
            }
        }
        if (flower.equalsIgnoreCase("Tulips")) {
            if(countFlower>80){
                result = tulips-(tulips*0.15);
            } else if (countFlower<=80) {
                result = tulips;
            }
        }
        if (flower.equalsIgnoreCase("Narcissus")) {
            if(countFlower<120){
                result = narcissus+(narcissus*0.15);
            } else if (countFlower>=120) {
                result = narcissus;
            }
        }
        if (flower.equalsIgnoreCase("Gladiolus")) {
            if (countFlower<80) {
                result=gladiolus+(gladiolus*0.2);
            }else if(countFlower>=80){
                result=gladiolus;
            }
        }
        if(budget>=result){
            difference = budget-result;
            System.out.printf("Hey, you have a great garden with %d %s and %.2f leva left.", countFlower, flower, difference);

        }else{
            System.out.printf("Not enough money, you need %.2f leva more.", result-budget);
        }

    }
}

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