Loading...
fiherLuci avatar fiherLuci 225 Точки

Тръби в басейн . Междинен тест 26 Март

Като правих теста тази задача ми даде 93 точки . Сега видях даденото решение видях и моето решение и не мога да разбера защо моето решение не работи и в кой случай не работи . Ще постна моето решение и официалното решение ,но бих искал да попитам възможно ли е да се видят тестовете на judge-а ,защото ми е интересно къде гърми . 

Условие - http://prntscr.com/as5e9e

Моето решение ,което сега ми изглежда куцо - http://pastebin.com/V7ZiFGtK

Официалното решение - http://pastebin.com/zDNJV8Kp

 

Основната разлика е използването на Math.Truncate вместо кастване към int ,но пак не разбирам къде бъркам и не мога да дебъгна ,защото не знам входните данни . 

Ако някой се интересува по-подробно може да отиде на judje - Coding 101 - Exam 26 Mart - Задача 02 Тръби в Басейн .

0
Programming Basics
pilieva avatar pilieva 4 Точки

Здравейте, 

може ли някой да ми помогне. Не мога да разбера къде греша. Judge ми дава 93 / 100. 

https://pastebin.com/yPyapALN

Благодаря!

0
pilieva avatar pilieva 4 Точки

Намерих си грешката, в else-а за отпечатваяне на текста вместо  %.0f  сложих %f. Сега резултата в Judge  е 100 / 100. 

0
03/09/2017 10:32:48
setahari avatar setahari 0 Точки

Някой  може ли да  даде код който да  дава 100/100 официалния код ми дава 69/100 .Благодаря!!!

0
JivkoJelev avatar JivkoJelev 235 Точки

Дай твоя код , ще ти го редактирам и хем ще си видиш грешката.

0
mirenna_i avatar mirenna_i 0 Точки

И аз имам нужда от помощ. Извъртях 30 варианта и не мога да надскоча 76/100. Може ли някой да каже защо?

int volume = Integer.parseInt(console.nextLine());
int debit1 = Integer.parseInt(console.nextLine());
int debit2 = Integer.parseInt(console.nextLine());
double hours = Double.parseDouble(console.nextLine());
double pipe1Volume = hours * debit1;
double pipe2Volume = hours * debit2;
double fullVolume = pipe1Volume + pipe2Volume;

if (volume >= fullVolume){
    double fullPercent = Math.floor(fullVolume / volume * 100);
    double pipe1Percent = Math.floor(pipe1Volume / fullVolume * 100);
    double pipe2Percent = Math.floor(pipe2Volume / fullVolume * 100);

    System.out.printf("The pool is %.0f%% full. Pipe 1: %.0f%%. Pipe 2: %.0f%%.\n", fullPercent, pipe1Percent, pipe2Percent);
} else {
    double overVolume = fullVolume - volume;

    System.out.printf("For %.1f hours the pool overflows with %.1f liters.\n", hours, overVolume);
}
0
JivkoJelev avatar JivkoJelev 235 Точки

Пробва ли с Math.Truncate вместо Math.floor?

0
mirenna_i avatar mirenna_i 0 Точки

Мерси за предложението, но в Java няма функция Math.Truncate (за разлика от .NET). В допъление, разликата между .floor и .Trunkate (според Google) е в отрязването само при отрицателни стойности, което в задачата, мисля не е възможно. 

 

0
Veli94 avatar Veli94 0 Точки
За часовете трябва да направиш DecimalFormat.


DecimalFormat df = new DecimalFormat("0.##");
System.out.printf("For %s hours the pool overflows with %.1f liters." ,df.format(hours) ,overflow );
0
pilieva avatar pilieva 4 Точки

Промених кода ти спрямо предложението на Veli94, сега вече дава 100/100 в judge. 

https://pastebin.com/yFTciQfv

0
27/10/2017 14:41:11
mirenna_i avatar mirenna_i 0 Точки

Благодаря, вече се получи. Конзолата ми изпечатваше с десетична точка, а с този формат ми дава десетична запетая. Явно с този формат взема настройките за език на компютъра.

0
SZahariev avatar SZahariev 4 Точки

Здравейте, някой може ли да ми каже защо ми дава 76/100 точки? Имам съмнение, че е защото трябва да се използва souf, но не съм сигурен.

 


import java.util.Scanner;

public class excercises {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        int v = Integer.parseInt(console.nextLine());
        int p1 = Integer.parseInt(console.nextLine());
        int p2 = Integer.parseInt(console.nextLine());
        double h = Double.parseDouble(console.nextLine());
        double pipe1 = (p1 * h);
        double pipe2 = (p2 * h);
        double pool =((pipe1 + pipe2) / v) * 100;
        Integer pool1 = (int) pool;
        double pipe1Percent = (pipe1 / (pipe1 + pipe2)) * 100 ;
        Integer pipe1Percent1 = (int) pipe1Percent;
        double pipe2Percent = (pipe2 / (pipe1 + pipe2)) * 100 ;
        Integer pipe2Percent2 = (int) pipe2Percent;

        if ((pipe1 + pipe2) <= v){
            System.out.println("The pool is" + " " + pool1 + "%" + " " + "full." + " " + "Pipe 1: " + pipe1Percent1 + "%." + " " + "Pipe 2: " + pipe2Percent2+ "%." );
        } else {

            System.out.println("For" + " " + h + " " + "hours the pool overflows with" + " " + ((pipe1 + pipe2) - v) + " " + "liters.");
        }


    }
}

0
inkarnasion avatar inkarnasion 278 Точки

Освен че трябва да използваш printf ти трябва и decimal format за да ти излезне коректно сметката.

1
SZahariev avatar SZahariev 4 Точки

Благодаря! Оправих го.

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