Loading...
NikolayLiubomirov avatar NikolayLiubomirov 82 Точки

ТОП 10 причини за FAIL на единичен тест в Judge системата

Най-неприятното нещо, което може да Ви се случи на изпит, е единичен тест да даде грешка в Judge системата. Ето защо направих списък с най-честите и неподозрителни причини за това. Направих поста специално за  предстоящите изпити. Тук са само случаи, в които Visual Studio няма да ни подчертае с червено, защото ще се компилират, но не както ние желаем и е описано в условието на задачата.

 

1. Граничен случай
                Пример:  ">", вместо ">=". Четете внимателно условията дали не се иска проверката до числото включително.

 

2. Грешка при copy-paste
                Пример:  "-" дефисът е всъщност дълго тире "" или нещо друго се е объркало при copy-paste, като "Аutumn" с "А" на кирилица (наистина се е случвало по време на изпит). Възможно е и заради едва забележим space в string-a да ви гръмне някой тест ("June ", вместо "June".)

 

3. Не Parse-вате правилно числата в правилния формат

Пример:  

double n = int.Parse(Console.ReadLine());

Куриозът е, че когато се случи IDE-то не го подчертава, а програмата гърми.

 

4. Не сте избрали Current Selection и се компилира друг код от Solution-а

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

 

5. Пропуснали сте нещо в условието

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

 

6. Делителят е int, делимото също е int, а ние очакваме резултатът да е дробно число.

Пример:

double x = 25 / 100;

вместо

double x = 25 / 100.0;

 

или

 

int y = 100;

double x = 25 / y;

вместо

int y = 100;

double x = 25 / (double)y;

Проверявайте интервала в условието [1.00 ... 1 000 000.00] - щом има десетична точка (.), значи се иска конзолата да чете дробно число и трябва да го сложите в double, decimal или float.

 

7. Някой placeholder или масив не работи

В програмирането броим от нула, така че да не се чудите, ако Ви излизат грешни резултати.

 

8. Няма къдрави скоби след if проверката, for или while цикъла 

Така влиза само в следващия ред.

Пример: Тук имаме и случай, в който не сме си форматирали кода добре. 

if (n > 10)
    Console.Write("n is bigger than: ")
    Console.WriteLine(10); // неправилно форматиране (с абзац навътре)

вместо:

if (n > 10)
{
    Console.Write("n is bigger than: ")
    Console.WriteLine(10);
}

 

9. Кодът ни не работи само в някои изключения

                Пример: Чертаем някаква фигурка на конзолата (например ромб), но когато въведем 1 или 2, програмата гърми... Най-вероятно някой new string смята отрицателен резултат, но вместо да си играем да го оправяме, за да спестим време, разглеждаме изключенията като отделни случаи и с return спираме изпълнението на програмата:

if (n == 1)

{

    Console.WriteLine("*");

    return;

}

else if (n == 2)

{

    Console.WriteLine(" *");

    Console.WriteLine("***");

    Console.WriteLine(" *");

    return;

}

 

10. Объркали сме име на променлива или поредността на четене от конзолата

Пример:  productKG, вместо productPrice.

Да, случва се и някой път се чудим с часове какво става. Логиката на задачата ни се струва без грешка, а то какво било – някакво си объркано име, заради невнимание или неправилна последователност на четене от конзолата…

 

Проверете тези случаи, ако смятате, че ще откриете грешката си по-бързо, отколкото с дебъгъра, или пък въобще няма да стане с дебъгъра, понеже fail-a в Judge не е на нулев тест и не Ви дава да видите вход/очакван изход, наш изход. Опитах се да съм колкото се може по-изчерпателен, но няма как да обхвана всичко, затова добавяйте и Вие варианти за грешки в коментарите, та с Ваша помощ да направим този пост извор на причини за бъгове!

И разбира се - успех на изпита! heart

Тагове:
18
Programming Basics 02/04/2018 14:59:37
Katemerry avatar Katemerry 1 Точки

Neglecting to take a gander at intersections and not utilizing mirrors successfully are the top reasons individuals bombed following changes made to the driving test in 2017. The Driver and Vehicle Standards Agency ( DVSA ) has uncovered the best 10 reasons individuals bombed the new driving test in its first year. https://gunengraver.us/shotgun/

0
1
goalken avatar goalken 5 Точки

I do not know what to say really what you share very well and useful to the community, I feel that it makes our community much more developed, thanks  8 ball

0
krum_43 avatar krum_43 756 Точки

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

Както е коментирал Martin.bg,когато използваме тип double при някои изчисления се губи точност.

Това се случва и при писане на код и на C#(не само на Java).

Тогава е добре да променим типа на въпросната променлива от double на decimal.

Има и още една стандартна грешка,която не е спомената във класацията и тя е съобшение за Time Error,която системата ни изписва при деление на 0.

Успех на изпита !!!

0
03/02/2021 13:33:23
krum_43 avatar krum_43 756 Точки

Поздравления за труда.Може би има и други принципни грешки,но всички описани случаи са важни.

-1
Psedo avatar Psedo 0 Точки

Neglecting to take a gander at intersections and not utilizing mirrors successfully are the top reasons individuals bombed following changes made to the driving test in 2017. The Driver and Vehicle Standards Agency ( DVSA ) has uncovered the best 10 reasons individuals bombed the new driving test in its first year. https://omegle.net.co/ https://camzap.onl/

0
olivamogar avatar olivamogar 1 Точки

Как точно работи системата? 

dino game

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.