Loading...
Saraalkadi avatar Saraalkadi 28 Точки

pipesInPool.js

Здравейте, имам проблем със задача 02. Pipes In Pool от 3.2. Simple Conditions - Exam Problems от книгата JS Basics. Judge ми дава 93/100, но не виждам къде е грешката. Някой успя ли да получи 100/100? Благодаря.
https://pastebin.com/WnUnAUhh

https://judge.softuni.org/Contests/Practice/Index/930#1

Задача: тръби в басейн

Басейн с обем 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]%."
  • Ако басейнът се е препълнил – с колко литра е прелял за даденото време, число с плаваща запетая.
    • "For [x] hours the pool overflows with [y] liters."

Имайте предвид, че поради закръглянето до цяло число се губят данни и e нормално сборът на процентите да е 99%, а не 100%.

Примерен вход и изход

Вход Изход Вход Изход
1000
100
120
3
The pool is 66% full. Pipe 1: 45%. Pipe2: 54%. 100
100
100
2.5
For 2.5 hours the pool overflows with 400 liters.

Насоки и подсказки

За да решим задачата, ще прочетем входа, ще извършим няколко проверки и изчисления и ще отпечатаме резултата.

Обработка на входните данни

Първата ни стъпка е да прочетем входните данни:

Следващата ни стъпка е да декларираме и инициализираме променлива, в която ще изчислим с колко литра се е напълнил басейна за времето, в което работникът е отсъствал. Изчисленията ще направим като съберем стойностите на дебита на двете тръби и ги умножим по часовете, които са ни зададени като вход:

Извършване на проверки и обработка на изходните данни

След като вече имаме и стойността на количеството вода, което е минало през тръбите, следва стъпката, в която трябва да сравним това количество с обема на самия басейн.

Това ще направим с проста if-else проверка, в която условието ще е дали количеството вода е по-малко от обема на басейна. Ако проверката върне true, то трябва да разпечатаме един ред, който да съдържа в себе си съотношението между количеството вода, минало през тръбите, и обема на басейна, както и съотношението на количеството вода от всяка една тръба спрямо обема на басейна.

Съотношението е нужно да бъде изразено в проценти, затова и всички изчисления до момента в този ред ще бъдат умножени по 100. Стойностите ще бъдат вмъкнати с placeholders и тъй като има условие резултата в проценти да се форматира до две цифри след десетичния знак без закръгляне, то за целта ще използваме метода Math.trunc(…):

Ако проверката обаче върне резултат false, то това означава, че количеството вода е по-голямо от обема на басейна, съответно той е прелял. Отново изхода трябва да е на един ред, но този път съдържа в себе си само две стойности - тази на часовете, в които работникът е отсъствал, и количеството вода, което е разлика между*влязлата вода и обема на басейна.

Тестване в Judge системата

Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/930#1.

danielmarinow avatar danielmarinow 1 Точки

https://pastebin.com/7aeNwCLc

0
Saraalkadi avatar Saraalkadi 28 Точки

Моят код дава 93%, както и Test #11 (Incorrect answer). А този дава 6/100.

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