Programming Basics Online Exam - 7 January 2018-06. Juice Diet
Здравейте! Какво пропускам тук? Къде греша? Моля за помощ! :))) Дава ми 50/100
import java.util.Scanner; public class JuiceDiet06 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int r = Integer.parseInt(scanner.nextLine()); int s = Integer.parseInt(scanner.nextLine()); int c = Integer.parseInt(scanner.nextLine()); int juiceMax = Integer.parseInt(scanner.nextLine()); for (int i = 0; i <= r; i++) { for (int j = 0; j <= s; j++) { for (int k = 0; k <= c; k++) { double juiceCurrent = i * 4.5 + j * 7.5 + k * 15; if (juiceCurrent == juiceMax - 1 || juiceCurrent == juiceMax) { System.out.printf("%s Raspberries, %s Strawberries, %s Cherries. Juice: %.0f ml.", i, j, k, juiceCurrent); return; } } } } } }
Благодаря!
Здравейте,
Ето тук е моя код:
https://pastebin.com/LfPP1Esy
Judge ми дава 50/100. Нулевите тестове са Ок. Как мога да разбера къде ми е грешката в този случай? Judge не дава никакви детайли?
Благодаря предварително!
Относно 50/100 в Judge (за Java) за https://pastebin.com/LfPP1Esy
Променливата "maxSok" е double. Според написаното в placeholder %.0f за "maxSok" при принтиране ще се закръгли на цяло число и ако "maxSok" има цифра след десетичната запетая ще даде грешен изход и занижени точки в Judge. В условието никъде не пише да се закръгля. Ако обаче за placeholder сe постави %s без да е ползван Decimal формат и ако "maxSok" няма цифри след десетичната запетая, то тогава след десетичната запетая ще се изпринтира една нула, която пак намалява точките в Judge.
Затова се вкарва:
import java.text.DecimalFormat;
и след това в конкретния случай може да се пише:
DecimalFormat df = new DecimalFormat("#.#######");
System.out.printf("%d Raspberries, %d Strawberries, %d Cherries. Juice: %s ml.", i, j, maxCheries, df.format(maxSok));
Така хем се маха нулата , хем се принтира всички след запетаята. Явно това е особено важно за максималния брой точки в задачата.