Софтуерно Инженерство
Loading...
+ Нов въпрос
yasen6275 avatar yasen6275 18 Точки

2-ра задача от Programming Basics Exam - 17 January 2016

Опитвам се да я реша, но явно кода ми е много бавен.

Някой може и да даде насоки как е толкова бавно че просрочвам времете с повече от 50%. (0.152 вместо 0.1)

http://pastebin.com/ZHxKjYzk

petar.dimitrov.86 avatar petar.dimitrov.86 450 Точки

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

1
yasen6275 avatar yasen6275 18 Точки

Мда. Забравил съм четенето на нова стойност във всеки един вариант на switc/case-а.

Не тествам при мен защото не съм на Visual Studio, а на MonoDevelop под Linux и такива инпути трябва да ги копирам ред по ред.

0
petar.dimitrov.86 avatar petar.dimitrov.86 450 Точки

Неприятно, пробвай поне като вкараш поне 3-4 реда променливи докато не ти излезе текст, който очакваш. Друго, което забелязах е че в условието е казано че е достатъчно променливите да са от тип int, a не uint (тоест само от 0 до 2147483647), и като видях джъдж тестовете, няма подадени отрицателни стойности. И също така на ред 13 не трябва ли while да спира на Exam Over вместо само Exam?

0
16/02/2016 15:47:27
yasen6275 avatar yasen6275 18 Точки

Аз с четенето на стринга го правя на масив от стрингове с раделител шпациите. Нормалните редове почват с число, такаче и "Exam" би трябвало да е достатъчно. Може би най-чистат проверка е дали втория стринг е някоя от опаковките, но е  повече писане.

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

Сега оставя да тазбера защо ми гърми на тест 4,5,6.

0
16/02/2016 20:05:17
kaloyannikov avatar kaloyannikov 528 Точки

в цикъла трябва да четеш всеки път input-a докато стане "Exam Over" , също така трябва да оправиш типовете данни и не съм сигурен дали логиката ти след това е правилна , но преди това трябва да коригираш тези грешки.

0
16/02/2016 19:11:50
gabi.ivanova avatar gabi.ivanova 370 Точки

Попромених ти я. Дава 100 http://pastebin.com/NbAd7JGW

Поне аз така бих подходила с някой неща. Когато изчисляваш например нестигащите бири смяташ колко каси трябват, после от общото количество нестигащи бири трябва да се извади количеството от касите и след това да се сметнат sixpack и след това по същия начин единичните бири. Не разгледах много как беше направено това. Може и да е било вярно. Такава е моята идея :)

0
16/02/2016 22:58:00
yasen6275 avatar yasen6275 18 Точки

100 точки в джъджа изобщо не са ми приоритет за тази задача по две прични.

1. Не може в оставащите пакети (каси и 6-ци) да имаш повече от получените от същия вид. Закон за запазване на масата един вид :) По тази причина логиката за изчисляване на оставащите опаковки и бири с целочислено делене и остатък на целочислено делене според мен е погрешна.

2. Не е ясна стратегията за разходване на бирите. Дали почваме от еденичните или от касите, или от 6-ците, или от тези които са най-много като опаковки. или от тези които са най-много като бири. По тази причина решенията са повече от едно.

 

0
20/02/2016 08:47:59
gabi.ivanova avatar gabi.ivanova 370 Точки

Разбирам. Въпрът ти е по-скоро върху смисловата част. 

 

0
yasen6275 avatar yasen6275 18 Точки

Не точно. Искам да разбера защо кода ми не работи при 31 заявени бири и доставени една каса, една шестица и една еденична бира.

0