Софтуерно Инженерство
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