Задача Calculate Discount

calucalte-discount

#1

Здравейте!
Имам проблем с един от тестовете (4) на задача https://judge.telerikacademy.com/problem/00304discount и не знам къде е проблема.
Резултатът от теста, който не минава е:
Your output (clipped)
6.30
4.73
Кодът е наличен тук:
https://pastebin.com/NpgHHVF9

Благодаря предварително :slight_smile:
Диди


#2

@diana_gospodinowa Диди, задачата предполага решение без да знаеш масиви :wink:
Т.е. може да се реши без масив.
Това което забелязвам е, че в масив от Double : " Double discounted_price[] = new Double[n];" му подаваш “Integer n = Integer.parseInt(user_input.nextLine());”, което вероятно ти създава предпоставка за грешка в калкулацията :wink:
При математически изчисления: “discounted_price[i] = item_price - item_price * 0.65;” също е добре да се използват скоби " ( & ) " показващи реда на извършване на действията.
В случай, че имаш затруднения с решаване на задачата - пиши да помагам. Нарочно не пействам готов код :slight_smile: Поздрави и happy coding :slight_smile:


#3

Здравей!
Ще подскажеш ли къде греша? И при мен е на същия тест грешката :frowning:

https://pastebin.com/0fwiPGgm


#4

@voxa доста неща са:

  1. коригирай си начина на вход от конзолата: " int items = Integer.parseInt(sc.nextLine());" & “double price = Double.parseDouble(sc.nextLine());”.
    Няма нужда от парсване.
  2. имаш грешка в условието на цикъла: “for (int i=1; i<=items; i++)”
  3. има проблем с формата на принтиране: “System.out.printf(”\n%.2f",disPrice)"

Отново споделям, че не пействам готов код, но ако много забиеш и не намираш решение, ще ти споделя и решението с корекции


#5

Привет , отново !
Оправих парсването .
Относно другите грешки, сигурно съм забила, както се изрази. :slight_smile:
“for (int i=1; i<=items; i++)” и “for (int i=0; i< items; i++)” е едно и също ,нали?


#6

“for (int i=1; i<=items; i++)” и “for (int i=0; i< items; i++)” е едно и също ,нали?

Различават се крайната и началната точка :slight_smile:

Коригирай формата и ще имаш 100 т.
Аз използвах DecimalFormat


#7

От 5тият път стана … Благодаря !


#8

Проблемът се реши с DecimalFormat и не е свързан с използане на n или масиви.
До момента това е първата задача, която има проблем със стандартно форматиране на double.


#9

Явно проблемът с теста, който се счита за грешен е следния:

При използване на DecimalFormat
Input:
2
18
13.5

Output:
6.30
4.72

В случай, че се използва друг формат, като double има разминаване в резултатите, т.е.

Output:
6.30
4.73

По прости сметки, както сме учили в училище…
13.50 * 0.35 = 4.725
Което при стандартно закръгляне си е 4.73.

За мен теста не е коректен и в случай, че се изисква специално форматиране на резултата е редно да се зададе, като пример или зависимост.

И все пак, ако на някой му интересно решение с цикъл и масив може да го открие тук: https://pastebin.com/TFJKDv21


#10

Благодаря ти diana_gospodinowa, и аз изпаднах във същия проблем, благодаря ти и за твоето интересно решение на проблема :wink:


#11

Радвам се, че съм помогнала било то и неволно :slight_smile:

Успех :slight_smile:


#12

Тестът е оправен. Извиняваме се за причиненото неудобство : )


#13

Пререшавам си циклите и имам същия проблем на JS, макар че първото решение е минало на 100%.

Как може да се закръгли 4.725 до 4.73? Само този тест не минава с .toFixed(2), тъй като връща стринг 4.72.

Math.floor/ceil/round връщат съответно целите числа.


#14

Здравейте.
Само аз ли не намирам тази задача в judge ?
Поздрави.


#15

@skurtov162 би трябвало да я виждате. Задачата е част от състезание и трябва да сте в него, за да имате достъп до нея.

@pavel.shishmanov правилният метод, който ви трябва е https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round