Задача Phone Bill

tasks

#1

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-са работи правилно


#2

Здравей,

Не съм сигурна как продължава решението ти и ми е трудно да предположа от къде идва грешката :slight_smile:

От този код виждам, че си взела предвид ситуацията когато получиш минути и съобщения в рамките на безплатните. Ако след това смяташ допълнителните сметки, сигурна ли си, че си тествала ако имаш минути в плана и съобщения в повече, както и обратно?

Успех,
Надя


Help needed "Phone bill" task
#3

Мерси много , открих си грешката ^^


#4

Здравейте,
Дава ми 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);
}

}


#5

Виж каква грешка ти дава Judge като аутпът. Най-вероятно е нещо при принтирането.


#6


#7

Дава ми това съобщение.
Как да го интерпретирам?


#8

Виж реда 0 additional minutes for 0.

Не ти ли прави нещо впечатление? Сравни го с примерния аутпът от judge. :slight_smile:


#9

Нищо не ми прави впечатление :slightly_smiling_face:
Щях ли иначе да питам?


#10

Точката след 0?


#11

здравей,
пробвай с примерен вход, където
смси = 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

и тн
дебъгни, виж къде се чупи и го оправи.

успех! :slight_smile:


#12

Видях къде ми се чупи логиката.

Благодаря, Денски :slight_smile: