Loading...
SimeonSimeonov avatar SimeonSimeonov 77 Точки

[Judge] C# Basics - Проблем със системата

Здравейте колеги,аз принципно съм записан за ниво 0 започващо от 15ти ноември,но още от сега реших да се пробвам да направя няколко от домашните на миналият курс.
Та стигнах до една примерна задача от изпит (Joro the football player)и я реших успешно.

Ето го и условието на задачата(задача 15) https://softuni.bg/downloads/svn/csharp-basics/Sept-2014/2.%20Primitive-Data-Types-and-Variables-Homework.docx

Рънвах я 100 пъти във visual studioto и всичко е точно както трябва да е,получавам абсолютно същите резултати които се очаква да получавам,ето и сорс кода ако някой иска да се увери че всичко работи:
http://pastebin.com/C0nH8tK5

Реших да пусна след което judge системата и да видя и там какво ще ми излезе,и изненада 0 точки...
Първото нещо което си помислих,добре де явно заема много памет или бавно се изпълнява,но и това не е проблемът се оказа,тъй като програмата е изпълнена за 0,011с(при 0.30с позволени)и заема 8,34мб(при 16мб позволени).

Свалих да видя авторското решение и чесно казано останах още по озадачен.
Ето го и авторският код който дава 100 точки:
http://pastebin.com/XSLAeYHi

Това авторско решение дори не отговаря на зададените ограничения на променливите в условието(тоест h да е между 0...52,p да е между 0...300 и леап годината да е "f" или "t"),не са изписани дори и най елементарни подсказки за потребителя(като Console.WriteLine("Въведете еди кво си");),заетата памет е 8,10мб и времето за изпълнение е 0,010с(почти същото като моя код),и това е за 100/100 а моят код който проверява стойностите дали са в правилните интервали със цикли е за 0 точки?

 

Преполагам проблемът е във мене и във това че незнам как точно трябва да се работи със judge системата,просто немога да разбера как програма която е 100% вярна и си работи без проблем получава 0 точки.
Ако някой може да ми разясни къде точно бъркам ще съм много благодарен :)

0
Programming Basics 08/11/2014 19:16:36
Kamigawa avatar Kamigawa 750 Точки

Console.WriteLine("Is the year leap?\n Enter t if it's leap and f if it's not"); не трябва да го има. Джъджа проверява едно към едно полученото от програмата със въведеното като решение. Казано по друг начин - ако джъжда очаква да получи 32, а ти му дадеш 10 реда с текст и след това 32 - смята го за грешно и дава 0 точки. Аналогично ако очаква "abv: 52" , а получи "abv:52" (разликата е един спейс) - отново го смята за грешно и дава 0 точки.

В условието на всяка задача има input и output - т.е. какво ще подаде джъжда и какво очаква да се върне - нищо повече няма да получи програмата ти като входни данни и всичко различно от оказания начин за даване на данните се смята за грешка - дори сметките на алгоритъма да са верни.

Също така всяка задача в джъжда има нулеви тестове, които показват нагледно ако има разлики между очаквано и получено. Цъкаш на details на текущия submit и може да ги видиш.

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

3
08/11/2014 18:40:32
crazy7 avatar crazy7 177 Точки

Също няма нужда да проверяваш входните данни те винаги ще са валидни:

"The input data will always be valid and in the format described. There is no need to check it explicitly."

Както казаха вече не трябва да имаш никакви редове от рода:

Console.WriteLine("The number of times joro played football this years is: " + footballTimes);

А да върнеш само числото както е в примера.

 

0
08/11/2014 18:40:08
SimeonSimeonov avatar SimeonSimeonov 77 Точки

Мерси колеги разбрах си грешката.
Махнах циклите за проверка на променливите,махнах Console.WriteLine,и този път получих 100 точки от системата.
За 1ви път я използвах системата сега така че рабрах къде ми е грешката и къде да внимавам в условието за бъдеще,чесно казано задачата се оказа 10 пъти по елементарна от това което мислех че трябва да е :)

0
Terziyskig avatar Terziyskig 1 Точки

Здравейте колеги,

 Аз също реших задачата, но нещо ми направи впечатление. В условието се казва, че Жоро играе по 2 пъти в "нормална" седмица, а в дадените примерни решения под условието се изчисляват само 2/3 от седмиците в които е играл без тези в които, Жоро е играл в родното си място. И в първият даден пример имаме за резултат че от 50 седмици Жоро е играл само 33.33 (2/3). Това са седмиците в които е играл, а не броя игри. За да се намерят трябва резултата да се умножи по 2 (игри през уикенда), за да се намерят игрите които е изиграл.

От там всички сметки на долу са грешни.

Моля някой да свери, за да се разбере къде е грешката.

0
Filkolev avatar Filkolev 4482 Точки

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

0
ivan91k avatar ivan91k 2 Точки

Здравейте! От къде мога да се запиша за ниво 0 - 15 ноември ? Никъде из сайта не намирам ..

0
Petya avatar Petya 2461 Точки

Здравей, можеш да подадеш своята кандидатура от тук. На началната страница има няколко бунтона "Кандидатствай". Кандидатстването е отворено до 13 ноември. На 14 ноември всички кандидати ще получат мейли дали са одобрени за курса. Повече информация можеш да прочетеш тук.

0
Petya avatar Petya 2461 Точки

Видях, че ти всъщност вече имаш кандидатура за сезон Януари, тъй като си бил част от курса C# Basics септември. За да бъдеш включен в C# Basics ноември, само напиши един мейл на info@softuni.bg и обясни накратко, че искаш да бъдеш записан.

0
ivan91k avatar ivan91k 2 Точки

мерси!

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