Помощ за задачка: Тръби в басейн Java
Знам че е обсъждана многократно въпросната задачка но в случая се налага да я решавам на Java и това ме спъва.
Ето условието:
Басейн с обем V има две тръби от които се пълни. Всяка тръба има определен дебит (литрите вода минаващи през една тръба за един час). Работникът пуска тръбите едновременно и излиза за N часа. Напишете програма, която изкарва състоянието на басейна, в момента, когато работникът се върне.
Вход
От конзолата се четат четири реда:
• Първият ред съдържа числото V – Обем на басейна в литри – цяло число в интервала [1…10000].
• Вторият ред съдържа числото P1 – дебит на първата тръба за час – цяло число в интервала [1…5000].
• Третият ред съдържа числото P2 – дебит на втората тръба за час– цяло число в интервала [1…5000].
• Четвъртият ред съдържа числото H – часовете които работникът отсъства – число с плаваща запетая в интервала [1.0…24.00]
Изход
Да се отпечата на конзолата едно от двете възможни състояния:
До колко се е запълнил басейна и коя тръба с колко процента е допринесла. Всички проценти се свеждат до цяло число (без закръгляне).
"The pool is [x]% full. Pipe 1: [y]%. Pipe 2: [z]%."
Aко басейнът се е препълнил – с колко литра е прелял за даденото време, число с плаваща запетая
"For [x] hours the pool overflows with [y] liters."
* Имайте предвид, че поради свеждането до цяло число се губят данни и нормално сборът на процентите да е 99%, а не 100%.
Ето моето решение:
import java.util.Scanner; public class u18 { public static void main(String[] args) { Scanner console = new Scanner(System.in); int volume = Integer.parseInt(console.nextLine()); int pipe1 = Integer.parseInt(console.nextLine()); int pipe2 = Integer.parseInt(console.nextLine()); double hours = Double.parseDouble(console.nextLine()); double water = pipe1 * hours + pipe2 * hours; if (water <= volume) { System.out.println("The pool is " + (int)(water / volume * 100) + "% full." + " Pipe 1: " + (int)(pipe1 * hours / water * 100) + "%." + " Pipe 2: " + (int)(pipe2 * hours / water * 100) + "%."); } else { System.out.println("For " + hours + " hours the pool overflows with " + (int)(water - volume) + " liters."); } } }
На пръв поглед изкарва точния резултат и все пак пустия джъдж дава 60 от 100. И не знам каде е грешката (ето Тук е задачката).