Phone Bill - JS Fundamentals

Здравейте,

Преди да пиша пост разглеждам дали не е решен вече във форума и специално на тази задача видях, че има същия проблем от 01/2019 споделен ( Задача Phone Bill ), но е останал нерешен.
За да не ви карам да четете другия пост ще опиша проблема и тук. При всеки един възможен input на локално ниво във VS Studio Code output-a ми изглежда коректен и всичко изглежда върви нормално. Проблема, обаче, идва когато поставя кода в judge системата, където ми реже или последните 2 реда print(), или последните 2 реда + последната променлива на някой от другите редове. За да стане по-ясно давам примери по-долу.

Бих се радвал някой, който вижда грешките ми да ги опише и да каже защо output-a е такъв.

Кода ми: https://pastebin.com/vXXvj4BH

Output: https://imgur.com/yU1cweM

Условие на задачата:

Phone Bill

A phone bill plan includes 1 hour of free calls and 20 text messages for 12.00 levas . Each additional minute costs 0.10 levas and each additional message costs 0.06 levas . Also, any additional minutes/text messages are subject to 20% sales tax. Write a program that calculates the additional charge for text, the additional charge for minutes, and the sales tax charge for both. Also, display the total amount paid.

Input

  • On the first line, you will receive the total amount of text messages.
  • On the second line, you will receive the total amount of minutes.

Output

  • 1st line - number of additional messages and additional amount paid
  • 2nd line - number of additional minutes and additional amount paid
  • 3rd line - amount paid in taxes
  • 4th line - total bill

Input

31
115

Output

11 additional messages for 0.66 levas
55 additional minutes for 5.50 levas
1.23 additional taxes
19.39 total bill

Input

18
44

Output

0 additional messages for 0.00 levas
0 additional minutes for 0.00 levas
0.00 additional taxes
12.00 total bill
2 Likes

Здравей,

На пръв поглед откривам няколко неща:

  1. В принта, в който принтираш обажданията, хардкоднатия стринг е additional messages, а трябва да е additional minutes.
  2. Накрая принтираш таксите делени на 100 с toFixed(2) и затова ти ги изкарва правилно, но при самото пресмятане на тотала, не ги взимаш правилно. Например, като ги сметнеш, числото, което получаваш по първия инпут е 123. Като принтираш излиза правилно - 1.23, но като смяташ тотала трябва да правиш същата операция, понеже ще ти добави 123, вместо 1.23.
  3. Също ти трябва .toFixed(2) на totalBill променливата за случаите, в които имаш точно число и искаш да принтираш, например 12.00, а не 12.

С тези промени всички тестове си минават.

@nminev42 Благодаря! На свежа глава си видях грешките, че вчера вечерта нещо бях прегрял, хаха. Имаше проблем с toFixed(2) на totalBill и ми изкарваше супер странен output (нещо от сорта на “126.161.23 total bill”). Усетих се да му сложа един parseFloat на additionalMessagesCost, additionalMinutesCost и на taxes също и всичко се оправи.
Още веднъж - благодаря ти.

2 Likes

Хахаха, познато. Доста често ми се случва и на мен - блъскам си главата в проблем няколко часа, взимам си почивка и като седна отново си откривам грешката за 5 минути. :smiley: Не трябва да се пренебрегват позитивите от почивката при по-дълги сесии.

2 Likes