Професионална програма
Loading...
NikolayLiubomirov avatar NikolayLiubomirov 79 Точки

ТОП 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

Тагове:
17
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