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

Задача Fishing Boat ?

Здравейте колеги!

Judge ми дава само 46/100 точки и не мога да разбера кое не наред.Моля някои да погледне кода и да каже къде е грешката!

Нулевите тестове минават но другите гърмят а аз не мога да видя защо.

Ето го и кода ми:

import java.util.Scanner;

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

        int budget = Integer.parseInt(scanner.nextLine());
        String season = scanner.nextLine();
        int fishmans = Integer.parseInt(scanner.nextLine());

        double rent = 0;
        double sum = 0.0;

        switch (season){
            case "Spring":
                rent = 3000;
                break;
            case "Summer":
                rent = 4200;
                break;
            case "Autumn":
                rent = 4200;
                break;
            case "Winter":
                rent = 2600;
                break;
                default:
        }
        if (fishmans <= 6){
            sum = rent - (0.1 * rent);
        }else if (fishmans > 7 && fishmans <= 11){
            sum = rent - (0.15 * rent);
        }else if (fishmans > 12){
            sum = rent - (0.25 * rent);
        }
        if (fishmans % 2 == 0 &&  !(season.equals("Autumn"))){
            sum = rent - (0.95 * rent);

            }
            double result = sum - budget;
            if (budget > sum){
                System.out.printf("Yes! You have " + "%.2f" + " leva left.",result * -1);
        }else {
                System.out.printf("Not enough money! You need "  + "%.2f" + " leva.",result);
            }
    }
}

Благодаря предварително!

Тагове:
0
Programming Basics
svetoslav_0 avatar svetoslav_0 1005 Точки

Проблемът ти идва от допълнителната отстъпка (с 5-те процента). Трябва да сметнеш допълнителна отстъпка. В този смисъл трябва да извадиш 5% от вече получената стоност на променливата sum, без изобщо да намесваш rent. Тоест трябва да стане нещо такова:

sum = sum * 0.95;

Още нещо съвсем вкрая: когато бюджетът е равен на сумата, тогава също им стигат парите :D

budget >= sum

 

1
Tarantula83 avatar Tarantula83 3 Точки

Така е по добре но дава само 86/100 точки.Гърми на 2 теста някъде.

0
svetoslav_0 avatar svetoslav_0 1005 Точки

Кои? Първи и трети тест ? 

0
Tarantula83 avatar Tarantula83 3 Точки

Да тия двата се чупят незнам защо.

0
REEEEVered avatar REEEEVered 0 Точки

Промени int budget на double.

0
03/10/2018 12:41:12
svetoslav_0 avatar svetoslav_0 1005 Точки

Ще ти дам подсказка, въпреки, че вече го направих: ако имат 100 лв и всичко им струва 100 лв, ще им стигнат ли парите? 

0
03/10/2018 13:23:52
Plamenovv avatar Plamenovv 1 Точки

Пробвай тук 

else if (fishmans > 7 && fishmans <= 11)

да го направиш  

else if (fishmans <= 11) , защото така ще включиш случая и ако има 7 рибари.

 

и махна ли = от budget >= sum?

на мен ми гърмеха 2-ри и 3-ти, защото правех същата проверка.

0
svetoslav_0 avatar svetoslav_0 1005 Точки

Грешката най - вероятно идва съвсем вкрая:

if (budget > sum){ ...}

Ако погледнем случая, когато budget = sum, тогава реално погледнато парите им стигат.

Така че трябва да изглежда по този начин:

if (budget >= sum){ ... } 
0
Tarantula83 avatar Tarantula83 3 Точки

Пф намерих я тая грешка най-накрая,сега вече е 100/100 точки.

Грешката беше на тоя ред:

double result = sum - budget;
            if (budget > sum){
                System.out.printf("Yes! You have " + "%.2f" + " leva left.",result * -1);
        }else {
                System.out.printf("Not enough money! You need "  + "%.2f" + " leva.",result);
            }
    }
}

А трябва да е ето така:

 double result = budget - sum;
        if (budget >= sum) {
            System.out.printf("Yes! You have " + "%.2f" + " leva left.", result);
        } else {
            System.out.printf("Not enough money! You need " + "%.2f" + " leva.", result * -1);
        }
    }
}

Луда работа скъса ми нервите :)

 

0
jorkaev avatar jorkaev 5 Точки

https://pastebin.com/5SHiReqy 100/100

но моето решение е без switch

0