Проблем със задача 01. Christmas Preparation
Здравейте,
Не мога да видя грешка в тази задчка,
https://pastebin.com/BNWwYZUf
а съдията
https://judge.softuni.bg/Contests/Practice/Index/887#0
казва 90/100.
Моля, дайте мнение.
Здравейте,
Не мога да видя грешка в тази задчка,
https://pastebin.com/BNWwYZUf
а съдията
https://judge.softuni.bg/Contests/Practice/Index/887#0
казва 90/100.
Моля, дайте мнение.
Math.Ceiling(number) закръгля до по-високото цяло число.
Math.Floor(number) - до по-ниското цяло число, т.е. 1.9 -> 1
Math.Round(число) закръгля до най-близкото цяло число ако не е зададено нищо друго. Това е каквото ти трябва.За повече инфо-https://msdn.microsoft.com/en-us/library/system.math.round%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 или по добре https://stackoverflow.com/questions/257005/how-do-you-round-a-number-to-two-decimal-places-in-c.
Здрасти!
Проблемът е това , че редовете 22,23 са абсолютно излишни.
Копирах ти кода,махнах тези два реда , paste в judge и даде 100/100.
Съветвам те да не използваш var ,действай направо с int,double,string...
Така се оказва.
Не съм и допускал, че верността на решението е в противоречие с условието, защото то е :
" Резултатът да се ФОРМАТИРА до третия знак след десетичния разделител. (1.2457 -> 1.245). "
Доколкото ми е известно чрез Console.WriteLine($"{sum:f3}"); резултатът ще се закръгли (1.2457 -> 1.246).
Да не би да греша в последното?
Има няколко варианта да закръглиш и да в условието не е точно дадено и чети хубаво, защото има условия където може да те объркат ,но то по-скоро в условито е дадено така ,за да се разбере ,че е до 3 ти знак ,а не е наблегнато на това дали ще го отреже или ще вземе стойноста и ще закгъгли до по-голямото/малкото.
По условие::
"Резултатът да се ФОРМАТИРА до третия знак след десетичния разделител. (1.2457 -> 1.245).", т.е. 1245.7 -> 1245.
Така, че би трябвало да се ползва Math.Floor().
Грешката се получава ето от тук:
var num = 7.6;
var sum = Math.Ceiling(num);
var sum1=Math.Floor(num);
var sum2 = Math.Round(num);
Console.WriteLine(sum);//input 8
Console.WriteLine(sum1);//input 7
Console.WriteLine(sum2);//input 8
double[] values = { 7.03, 7.64, 0.12, -0.12, -7.1, -7.6 };
Console.WriteLine(" Value Ceiling Floor Round\n");
foreach (double value in values)
Console.WriteLine("{0,7} {1,16} {2,14} {3,14}",
value, Math.Ceiling(value), Math.Floor(value), Math.Round(value));
input:
Value Ceiling Floor Round
7.03 8 7 7
7.64 8 7 8
0.12 1 0 0
-0.12 0 -1 0
-7.1 -7 -8 -7
-7.6 -7 -8 -8
Press any key to continue . . .
Сега станали по-ясно.
Тези неща са ясни. Интересува ме в моя код какво става. При съдията за грешния отговор няма входни и изходни данни.