Софтуерно Инженерство
Loading...
+ Нов въпрос
m.mihaylov avatar m.mihaylov 3 Точки

Toy Shop- PHP решение

Здравейте. Пуснах въпроса в старата тема за задачата, но я пускам и тук, дано повече гора я видят. При зададените входни данни в условието, получавам правилният резултат, смятам, че и логиката ми е вярна, но в Judge ми дават само 40%. Къде бъркам? https://pastebin.com/Uz5vXLUN

Тагове:
Thedi avatar Thedi 200 Точки
Best Answer

Здравей,

Проблемът ти е, че ти задаваш следното нещо:

number_format($Difference,2)

И този начин на записване ще работи правилно само за малки числа. 
Пример за работещ код:

<?php

$number = 418.20;

echo number_format($number, 2); // 418.20

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

<?php

$number = 515757.5454;

echo number_format($number, 2); // 515,757.55

И в случай, че числото е голямо започва да ти се появява една "," защото number_format може да приема като опции и какъв символ да използва за да разделя дробната част на числото и с какъв символ да разделя хилядните. В случаят на твоят код ти не задаваш с какво да разделя хилядните и по подразбиране то използва "," 
За да работи кодът ти просто трябва да подадеш, че не искаш да разделя хидялните с запетая което става така:
 

<?php

$number = 515757.5454;

echo number_format($number, 2, ".", ""); // 515757.55

Първата опция е числото после е броят символи след десетичната запетая след което е опция за символ за разделяне на десетичната част и след това е символ за разделяне на хилядните в случая не искаме да има такъв за това подаваме празен стринг.

Ако промениш само това в решението ти ще вземеш 100/100.

Задачата може да бъде решена и с sprintf(); по следния начин - https://pastebin.com/S1LVTHdH

 

Хубаво е имената на променливите ти да са camelCase. Да започват с малка буква и само всяка нова дума с Голяма първа буква. $primernaPromenliva.


Ако имаш въпроси питай.

Надявам се да съм бил полезен.

2
21/01/2018 14:20:08
ad2bg avatar ad2bg 123 Точки

Когато $Difference ти се получи < 0, с минуса ли трябва да се изведе? Само питам...

0
m.mihaylov avatar m.mihaylov 3 Точки

$difference никога не е по-малък от нула, защото, както в if-а е равен на по-голямото минус по-малкото, така и в else-а. 

0
ad2bg avatar ad2bg 123 Точки

Да, прав си, извинявай, недоглеждане от моя страна.

0