Софтуерно Инженерство
Loading...
+ Нов въпрос
max_points99 avatar max_points99 1 Точки

Fishing Boat проблем

Здравейе, решавам задачата по два различи начина и Judge все ми дава 60/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 fishingMen = Integer.parseInt(scanner.nextLine());

        double priceBoat = 0;
        double discount = 0;


        if (season.equals("Spring")) {
            priceBoat = 3000;
        } else if (season.equals("Summer") || season.equals("Autumn")) {
            priceBoat = 4200;
        } else {
            priceBoat = 2600;
        }
        if (fishingMen <= 6) {
            discount = priceBoat * 0.1;
        } else if (fishingMen <= 11) {
            discount = priceBoat * 0.15;
        } else {
            discount = priceBoat * 0.25;
        }
        if (fishingMen % 2 == 0 && !season.equals("Autumn")) {
            discount = discount * 0.95;
        }
        double lastPrice = priceBoat - discount;
        double moneyLeft = budget - lastPrice;
        if (budget >= lastPrice) {
            System.out.printf("Yes! You have %.2f leva left.", moneyLeft);
        } else {
            System.out.printf("Not enough money! You need %.2f leva.", Math.abs(moneyLeft));
        }
    }
}

 

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

Здравей,

имаш неточност в изчислението на отстъпката.

Пример : Ако е лято и рибарите са 10, то за 3000 -> отстъпката е 450. След това трябва да добавиш още 5%, а ти умножаваш отстъпката по 0.95, което я прави дори по-малка 427.50 Незнам дали успях да обясня, но ако следваме логиката ти, корекциите би трябвало да са нещо такова ..

        priceBoat -= discount; // цената за наем след отстъпка за брой рибари
        if (fishingMen % 2 == 0 && !season.equals("Autumn")) {
            discount = priceBoat * 0.05; // ако за четен брой и не е есен -> нови 5% отстъпка
            priceBoat -= discount; // вадим новата отстъпка от текущата цена за наем
        }

//        double lastPrice = priceBoat - discount; // излишно
        double lastPrice = priceBoat; // за съвместимост с кода по-долу

Поздрави :)

0
07/10/2019 22:05:53
max_points99 avatar max_points99 1 Точки

Здрасти и така го променям и пак 60/100frown. А и аз го разбирам, че когато са четен брой тогава не добавям 5% към отстъпката.

discount = discount + (discount * 0.05);

0
07/10/2019 22:18:27
mark79 avatar mark79 561 Точки
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 fishingMen = Integer.parseInt(scanner.nextLine());

        double priceBoat = 0;
        double discount = 0;

        if (season.equals("Spring")) {
            priceBoat = 3000;
        } else if (season.equals("Summer") || season.equals("Autumn")) {
            priceBoat = 4200;
        } else {
            priceBoat = 2600;
        }
        if (fishingMen <= 6) {
            discount = priceBoat * 0.1;
        } else if (fishingMen <= 11) {
            discount = priceBoat * 0.15;
        } else {
            discount = priceBoat * 0.25;
        }

        priceBoat -= discount;
        if (fishingMen % 2 == 0 && !season.equals("Autumn")) {
            discount = priceBoat * 0.05;
            priceBoat -= discount;
        }

//        double lastPrice = priceBoat - discount;
        double lastPrice = priceBoat;
        double moneyLeft = budget - lastPrice;
        if (budget >= lastPrice) {
            System.out.printf("Yes! You have %.2f leva left.", moneyLeft);
        } else {
            System.out.printf("Not enough money! You need %.2f leva.", Math.abs(moneyLeft));
        }
    }
}

 

0
max_points99 avatar max_points99 1 Точки

Видях се грешката, много ти благодаря за съдействието, ето го и кода

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 fishingMen = Integer.parseInt(scanner.nextLine());

        double priceBoat = 0;
        double discount = 0;


        if (season.equals("Spring")) {
            priceBoat = 3000;
        } else if (season.equals("Summer") || season.equals("Autumn")) {
            priceBoat = 4200;
        } else {
            priceBoat = 2600;
        }
        if (fishingMen <= 6) {
            discount = priceBoat * 0.1;
        } else if (fishingMen <= 11) {
            discount = priceBoat * 0.15;
        } else {
            discount = priceBoat * 0.25;
        }
        double lastPrice = priceBoat - discount;
        if (fishingMen % 2 == 0 && !season.equals("Autumn")) {
            lastPrice = lastPrice - (lastPrice * 0.05);

        }

        double moneyLeft = budget - lastPrice;
        if (budget >= lastPrice) {
            System.out.printf("Yes! You have %.2f leva left.", moneyLeft);
        } else {
            System.out.printf("Not enough money! You need %.2f leva.", Math.abs(moneyLeft));
        }
    }
}
0