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

Dishwasher

Здравейте,

Моля за малко помощ. 

Полувам 90 от 100. Не мога да видя какво изпускам.

Прилагам код и условие. Мерси !


1.Съдомиялна

Гошо работи в ресторант и отговаря за зареждането на съдомиялната накрая на деня.

Вашата задача е да напишете програма, която изчислява, дали дадено закупено количество бутилки от препарат за съдомиялна е достатъчно, за да измие определено количество съдове. Знае се, че всяка бутилка съдържа 750 мл. препарат, за 1 чиния са нужни 5 мл., а за тенджера 15 мл.  Приемете, че на всяко трето зареждане със съдове, съдомиялната се пълни само с тенджери, а останалите пъти с чинии. Докато не получите команда "End" ще продължите да получавате бройка съдове, които трябва да бъдат измити.

Вход

От конзолата се четат:

  • Брой бутилки от препарат, който ще бъде използван за миенето на чинии - цяло число в интервала [1…10]

На всеки следващ ред, до получаване на командата "End" или докато количеството препарат не се изчерпи, брой съдове, които трябва да бъдат измити - цяло число в интервала [1…100]

Изход

В случай, че количеството препарат е било достатъчно за измиването на съдовете:

"Detergent was enough!"

"{брой чисти чинии} dishes and {брой чисти тенджери} pots were washed."

"Leftover detergent {количество останал препарат} ml."

В случай, че количеството препарат не е било достатъчно за измиването на съдовете:

"Not enough detergent, {количество не достигнал препарат} ml. more necessary!"


import java.util.Scanner;

public class dishWasher {

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

        int countBottles = Integer.parseInt(scan.nextLine());
        countBottles*=750;

        int mlPerDishes = 0;
        int countDishes = 0;
        int mlPerPots = 0;
        int countPots = 0;

        boolean isItEnd = false;

        int allMlPerWash = 0;
        int result = 0;

        int looper = 0;
        String input = "";
        while (true){
            input = scan.nextLine();

            if ("End".equals(input)){
                isItEnd = true;
                break;
            }

            int dishInput = Integer.parseInt(input);
            looper++;

            if (looper % 3 == 0){
                mlPerPots+=dishInput;
                countPots+=dishInput;
            }else {
                mlPerDishes+=dishInput;
                countDishes+=dishInput;
            }

            allMlPerWash = mlPerDishes*5 +  mlPerPots*15;

            if (countBottles <= allMlPerWash){
                break;
            }
            
        } if (isItEnd || countBottles >= allMlPerWash){
            result =  countBottles - allMlPerWash;
            System.out.printf("Detergent was enough!\n" +
                    "%d dishes and %d pots were washed.\n" +
                    "Leftover detergent %d ml.",countDishes,countPots,result);

        }else {
            result = Math.abs(allMlPerWash - countBottles);
            System.out.printf("Not enough detergent, %d ml. more necessary!",result );

        }
    }
}

 

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

Здравей,

Трябва да е if (countBottles < allMlPerWash){ break;}

Няма логика да принтираш "0 ml. more necessary!"

В единия случай, ако следващата команда е end, препаратът ще е стъгнал, в другия - ще отпечаташ, примерно, че са нужни още 50 мл.

Освен това, "isItEnd' не ти е нужна.

0
08/11/2019 08:59:58
AnnaIvanova11 avatar AnnaIvanova11 1 Точки

Много, много благодаря !!! yes Имам толкова варианти на код за тази задача , сега чак отчетох нулата и че трябваше да мисля за гранични проверки.

1
08/11/2019 14:20:29