Loading...
AnnaIvanova11 avatar AnnaIvanova11 21 Точки

Pipes In Pool (Conditional Statements - More Exercises) 30/100n JAVA

Здравейте, 

Програмата ми работи в ИДЕ-то, но в judge ми дава 30/70, не показва проверки. С дадените примери в условията при мен е окей. Видях други решения във форума, но моля ако някой има време да каже, къде бъркам аз в логиката си. Благодаря ви!

Ето решението ми :

http://pastebin.com/cMzG8Gb1 

П.С.: Аутпута ми е такъв, защото не си открих как да съчетая процентите, които влизат като стринг в принтф.

Тагове:
0
Programming Basics
Vl.Metodiev avatar Vl.Metodiev 54 Точки
Best Answer

Здравей

 

Разгледах кода внимателно и забелязах няколко математико-логически грешки. Първо на 12 ред умножаваш обема на басеина по 0.1, така получаваш 1/10 част от обема, а не запълването на басеина. След това на 15 и 16 ред делиш дебитът от една тръба на общият дебит на двете тръби умножен по часовете. За да изчислиш делът (%-ът) на едната тръба, трябва да разделиш нейният дебит на общият дебит на тръбите. На 19 и 20 ред коригираш тази грешка, като съответно получените на 15 и 16 ред резултати, още веднъж умножаваш по часовете.

 

По-долу ще приложа решение, което е кратко и лесно разбираемо, мисля, че от него по - лесно ще разбереш, къде си пообъркала задачата.

 

import java.util.Scanner;

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

        int volumeOfThePool = Integer.parseInt(input.nextLine());
        int firstPipe = Integer.parseInt(input.nextLine());
        int secondPipe = Integer.parseInt(input.nextLine());
        double hours = Double.parseDouble(input.nextLine());

        double sum = (firstPipe + secondPipe) * hours;
        double difference = volumeOfThePool - sum;

        if(difference >= 0){
            double filledVolume = (volumeOfThePool - difference) / (double)volumeOfThePool * 100.0;
            double firstPipePercent = firstPipe / (double)(firstPipe + secondPipe) * 100.0;
            double secondPipePercent = secondPipe / (double)(firstPipe + secondPipe) * 100.0;

            System.out.println("The pool is " + filledVolume + "% full. Pipe 1: " + firstPipePercent + "%. Pipe 2: " + secondPipePercent +"%.");
        }
        else{
            System.out.printf("For %.2f hours the pool overflows with %.2f liters.", hours, Math.abs(difference));
        }
    }
}

 

Успех!

0
AnnaIvanova11 avatar AnnaIvanova11 21 Точки

Благодаря ти!

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