Loading...
DenitsaPambelova avatar DenitsaPambelova 3 Точки

[Programming Basics] Онлайн практически приемен изпит 14 и 15 Април 2018 - задача Solar System C#

Здравейте!

Задача Solar System със следното решение ми дава 60т в Judge, а работи с примерите от условието.

Използвам Dictionary,за да не стане дълга проедица от if-oве.

Помощ къде греша?

https://pastebin.com/xF0uXFU9

 

Благодаря!

Тагове:
0
Programming Basics
krasio12356 avatar krasio12356 19 Точки

Когато инициализираш речника със инишалайзинг лист, той вече съдържа всички ключове от листа.

За това проверките по долу дали съдържа ключовете са безсмислени.

Той така или иначе ги съдържа

 

Не е логично веднага след инициализацията, да проверяваш дали речника съдържа ключовете, с които е инициализиран. Той ги съдържа по определение.

 

В случая още първата проверка дава задължително истина и променливата максдейс става 7. 

Проверките по долу са недостъпни, и макс дейс задължително я инициализираш със 7.

 

На примерите не дава грешка, щото примерите не се влияят, от това, че максдейс е 7. Но някои от скритите тестове се влияят от точната стойност на максималните дни и за това нямаш 100 точки.

0
26/04/2018 11:14:16
DenitsaPambelova avatar DenitsaPambelova 3 Точки

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

тук искам да кажа ,че ако ключът /планетата/ е Меркурий, максималният престой ще е 7 дни.

 if (dict.ContainsKey("Mercury")) { maxdays = 7; }  - но може би не е правилният начин за изразяване.

Тоест променливата maxdays e различна за различните планети.

 

0
krasio12356 avatar krasio12356 19 Точки

Няма смисъл да пишеш иф конструкция, когато си сигурна в резултата от проверката.

Може или да инициализираш втори речник, в който стойност да са максималните дни. Или да дефинираш клас, в който да обединяваш двете стойности, и този клас да е стойност в речника.

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

 

0
DenitsaPambelova avatar DenitsaPambelova 3 Точки

Благодаря много! С моите знания, за да се освободя от тези ифове, е по-добре да инициализирам втори речник с ключ стринг-името на планетата и стойност максималните дни. и после само една проверка дали дните от конзолата са по-малко от максималните стойности зададени във втория речник.

Ако са повече, печатам "Невалиден брой дни".

0
26/04/2018 11:44:33
krasio12356 avatar krasio12356 19 Точки

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

Но не е лошо и да се усвоят, защото има случаи, в които без тях не може.

 

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

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

0
26/04/2018 11:55:30
TeMePyT avatar TeMePyT 142 Точки

https://pastebin.com/0m8QrpW8 Моето решение от изпита, точно с 2 речника за да избегна максимално много if-ове. 

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