Задача 02 - Тръби в басейн
Здравейте,
На моето решение ми дава 92/100. Не мога да намеря къде ми е грешката. Ако може за помощ.
решение: https://pastebin.com/0CTQC0Qy
условие: https://judge.softuni.bg/Contests/Practice/Index/179#1
Здравейте,
На моето решение ми дава 92/100. Не мога да намеря къде ми е грешката. Ако може за помощ.
решение: https://pastebin.com/0CTQC0Qy
условие: https://judge.softuni.bg/Contests/Practice/Index/179#1
Нещо не мога да намеря къде ти е грешката. Можеш да погледнеш моето решение за 100 тук: https://pastebin.com/Y51L2jSi
Мерси, но си намерих грешката.
Тази част от кода ми е искало да бъде в if-a {}
pipe1 = Math.Truncate(pipe1);
pipe2 = Math.Truncate(pipe2);
capacity = Math.Truncate(capacity);
percent = Math.Truncate(percent);
Колеги, ако може малко помощ и на мен. Judge дава 76/100. Не мога да открия грешка.
Ето го и кода:
import java.util.Scanner;
public class Pipes {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int v = Integer.parseInt(scanner.nextLine());
int p1 = Integer.parseInt(scanner.nextLine());
int p2 = Integer.parseInt(scanner.nextLine());
double h = Double.parseDouble(scanner.nextLine());
double vol1=h*p1;
double vol2=h*p2;
double totalvol=vol1+vol2;
double fullpercent=(totalvol/v)*100;
double percent1=(vol1/totalvol)*100;
double percent2=(vol2/totalvol)*100;
if (totalvol<=v){
System.out.printf("The pool is %d%% full. Pipe 1: %d%%. Pipe 2: %d%%.", (int)fullpercent, (int)percent1, (int)percent2);
}
else {
System.out.printf("For %.1f hours the pool overflows with %.1f liters.", h, totalvol-v);
}
}
}
Първо всички проценти се свеждат до цяло число - и във втората ти проверка процента трябва да е цяло число, а не %.1f.
Другото по-важно е че задачата е правена за C# и трябва да използваш Decimal Format за решение за Java за този процент във втората проверка:
else {
DecimalFormat df = new DecimalFormat("0.##");
System.out.printf("For %s hours the pool overflows with %.1f liters.", df.format(h), totalvol-v);
Ето поправено твое решение: https://pastebin.com/vb3Fu4K5
Дано да съм помогнала :)
Разбира се че сте помогнали. Благодаря Ви.
Но все още не са ми ясни следните неща:
1. (int)fullpercent - това всъщност връща цялата част - тоест цяло число, без закръгляне от double. Което отговаря на това което казвате - процентите до цяло число. Както се изисква в условието. Предполагам съм прав ?
2. Във втората проверка няма проценти - там имаме часове и литри - и двете са числа с плаваща запетая и както е посочено в условието трябва да са закръглени до първия знак след десетичната запетая. Нещо което постигам с %.1f. Или бъркам ?
3. "задачата е правена за C#" - тука ме загубихте - нищо не ми говори това... а и не би ли следвало да си има решение и на Java ? И съответно judge да може правилно да го оцени ?
4. Decimal Format - казвате да позлвам това за проверката в else-a. Хубаво, но единствената разлика която виждам в резултата е че при мен връща примерно 2.5, с decimal 2,5 (при мен с точка, с decimal е запетая...ако не откривате разликата).
5. DecimalFormat("0.##") - това не форматира ли до втория знак ако има втора значеща цифра? И то закръгля, нещо което е подчертано в условието че не трябва да става... Или аз бъркам... поне така разбирам от примера даден в stackoverflow:
public static final DecimalFormat df1 = new DecimalFormat( "#.##" );
public static final DecimalFormat df2 = new DecimalFormat( "#.00" );
System.out.println(df1.format(7.80));
System.out.println(df1.format(85));
System.out.println(df1.format(85.786));
System.out.println(df2.format(7.80));
System.out.println(df2.format(85));
System.out.println(df2.format(85.786));
And the output will be
7.8
85
85.79
7.80
85.00
85.79
6. Има ли как в judge да видя грешните резултати ?
Time used: 0.028 s
Memory used: 1.10 MB
Time used: 0.024 s
Memory used: 1.10 MB
Time used: 0.024 s
Memory used: 1.11 MB
Има ли как да се види какво точно е грешно ? Какъв е входа и очаквания изход примерно...?
7. System.out.printf("For %s hours the pool overflows with %.1f liters.", df.format(h), totalvol-v);
%s ми говори че df.format(h) e всъщност числото форматирано, но конвертирано в стринг ? Или бъркам ? Това обяснява запетаята по-горе....
8. Възможно ли е да ми дадете пример в който моето решение се дъни за да го видя ?
Въпреки горните ми размишления и неясности факт е че judge даде 100/100 на програмата с поправката....
Съжелявам ако въпросите ми ви звъчат тъпо, но нямам опит и искам да си обясня правилно нещата.
Мерси, но си намерих грешката.