Hey,
Опитвам се да реша Phone Bill и получавам 4/5 , като грешния отговор е отрицателно число , по принцип това не би трябвало да е възможно, понеже
Scanner Input = new Scanner(System.in);
int messages = Input.nextInt();
int minutes = Input.nextInt();
if (messages <= 20 && minutes <= 60 || messages<=0 && minutes<=0 ) {
System.out.println(“0 additional messages for 0.00 levas”);
System.out.println(“0 additional minutes for 0.00 levas”);
System.out.println(“0.00 additional taxes”);
System.out.println(“12.00 total bill”); }
(и след това е кода за екстра минутите и там допълнителните сметки)
и не разбирам как след това може да се получи отрицателно число. а и в останалите 4 case-са работи правилно
Nadya
December 21, 2018, 5:46pm
2
Здравей,
Не съм сигурна как продължава решението ти и ми е трудно да предположа от къде идва грешката
От този код виждам, че си взела предвид ситуацията когато получиш минути и съобщения в рамките на безплатните. Ако след това смяташ допълнителните сметки, сигурна ли си, че си тествала ако имаш минути в плана и съобщения в повече, както и обратно?
Успех,
Надя
1 Like
Мерси много , открих си грешката ^^
1 Like
Здравейте,
Дава ми 4/5 и не мога да открия грешката си. Моля за съдействие.
Кода ми е:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double totalMessages = Double.parseDouble(scanner.nextLine());
double totalMinutes = Double.parseDouble(scanner.nextLine());
double additionalMinuteCost = 0.10 * 1.2;
double additionalMessageCost = 0.06 * 1.2;
double additionalMinutes = totalMinutes - 60;
double additionalMessages = totalMessages - 20;
double totalCost = 12.0;
double additionalTaxes = ((additionalMessages) * 0.06 + (additionalMinutes) * 0.1) / 5;
if (totalMessages > 20) {
totalCost += (totalMessages - 20) * additionalMessageCost;
}
if (totalMinutes > 60) {
totalCost += (totalMinutes - 60) * additionalMinuteCost;
}
if (additionalMessages <0){
additionalMessages = 0;
}
if (additionalMinutes <0){
additionalMinutes = 0;
}
if (additionalTaxes<0) {
additionalTaxes = 0;
}
System.out.printf("%.0f additional messages for %.2f levas%n", additionalMessages, additionalMessages * 0.06);
System.out.printf("%.0f additional minutes for %.2f levas%n", additionalMinutes, additionalMinutes * 0.1);
System.out.printf("%.2f additional taxes%n", additionalTaxes);
System.out.printf("%.2f total bill", totalCost);
}
}
Виж каква грешка ти дава Judge като аутпът. Най-вероятно е нещо при принтирането.
Дава ми това съобщение.
Как да го интерпретирам?
Виж реда 0 additional minutes for 0.
Не ти ли прави нещо впечатление? Сравни го с примерния аутпът от judge.
Нищо не ми прави впечатление
Щях ли иначе да питам?
здравей,
пробвай с примерен вход, където
смси = 25 (давам тази цифра, защото явно тя е г грешния ти тест)
минути < 60 - тук се появява грешно изчисление в additional taxes логиката ти
пробвай примерно при вход:
25
59
ти изкарваш :
5 additional messages for 0.30 levas
0 additional minutes for 0.00 levas
0.04 additional taxes —> а трябва да е 0.06
12.36 total bill
а при вход:
25
0
ти изкарваш:
5 additional messages for 0.30 levas
0 additional minutes for 0.00 levas
0.00 additional taxes —>>> пак трябва да е 0.06
12.36 total bill
и тн
дебъгни, виж къде се чупи и го оправи.
успех!
Видях къде ми се чупи логиката.
Благодаря, Денски
1 Like
Здравейте и от мен,
и на мен ми куца едно решение на тази задача. Подобно на колегата Иванов, джъджът ми показва:
а кодът ми е следния :
Нещо бъркам и аз, когато минути нямам а СМС-ите са 5+.
Ще съм безкрайно благодарна, на този който може да удари рамо…
Здравей, не съм сигурен, но на пръв поглед виждам, че си изключила случая когато съобщенията и минутите са равни. Т.е. >=60 , >=20
Здравей и мерси за отговора.
Програмата работи с 20 смс-и и 60мин. Показва 12лв сметка.
Просто това равенство минава в else, демек при последния принт.
И все пак някъде греша
petbiv
November 5, 2019, 10:45am
16
Здравей,
При следните входни данни:
25
0
Програмата ти показва:
5 additional messages for 0.30 levas
0 additional minutes for 0.00 levas
1.26 additional taxes
19.56 total bill
А би трябвало да показва:
5 additional messages for 0.30 levas
0 additional minutes for 0.00 levas
0.06 additional taxes
12.36 total bill
Обърни внимание, че данъците са 20% от допълнителните 0.30 лева, което е 0.06.
Пиши пак, ако не се получава.
Поздрави,
Петър
1 Like
Пак ме спасяваш
Мерси, колега, имаме го:
Малко дървено го редактирах, но важното е че работи:
Хубав ден!
Алекс
Здравейте,
На лаптопа програмата ми работи, но в judge ми дава 2/5. Най-вероятно имам проблем с принтирането, но не си намирам грешката.
Това е кодът ми: https://pastebin.com/cG0r1yLR
Благодаря за съдействието!
Здравей,
на редове 33 и 44
Console.WriteLine(“0 additional taxes”);
"0 additional taxes" не е съобщението, което ти трябва, а "0 additional minutes (или съответно messages) for 0.00 levas"
Успех