2-ра задача от Programming Basics Exam - 17 January 2016
Опитвам се да я реша, но явно кода ми е много бавен.
Някой може и да даде насоки как е толкова бавно че просрочвам времете с повече от 50%. (0.152 вместо 0.1)
Опитвам се да я реша, но явно кода ми е много бавен.
Някой може и да даде насоки как е толкова бавно че просрочвам времете с повече от 50%. (0.152 вместо 0.1)
Не съм се пробвал с тази задачка, но я вкарах във Visual Studio да видя какво ще изпише като вкарам примерните input-и и програмата просто спира след като въведеш първата стойност за beers. Ти успяваш ли да изкараш желаните резултати във Visual Studio преди да я пробваш в джъджа?
в цикъла трябва да четеш всеки път input-a докато стане "Exam Over" , също така трябва да оправиш типовете данни и не съм сигурен дали логиката ти след това е правилна , но преди това трябва да коригираш тези грешки.
Попромених ти я. Дава 100 http://pastebin.com/NbAd7JGW
Поне аз така бих подходила с някой неща. Когато изчисляваш например нестигащите бири смяташ колко каси трябват, после от общото количество нестигащи бири трябва да се извади количеството от касите и след това да се сметнат sixpack и след това по същия начин единичните бири. Не разгледах много как беше направено това. Може и да е било вярно. Такава е моята идея :)
100 точки в джъджа изобщо не са ми приоритет за тази задача по две прични.
1. Не може в оставащите пакети (каси и 6-ци) да имаш повече от получените от същия вид. Закон за запазване на масата един вид :) По тази причина логиката за изчисляване на оставащите опаковки и бири с целочислено делене и остатък на целочислено делене според мен е погрешна.
2. Не е ясна стратегията за разходване на бирите. Дали почваме от еденичните или от касите, или от 6-ците, или от тези които са най-много като опаковки. или от тези които са най-много като бири. По тази причина решенията са повече от едно.
Разбирам. Въпрът ти е по-скоро върху смисловата част.
Не точно. Искам да разбера защо кода ми не работи при 31 заявени бири и доставени една каса, една шестица и една еденична бира.
Мда. Забравил съм четенето на нова стойност във всеки един вариант на switc/case-а.
Не тествам при мен защото не съм на Visual Studio, а на MonoDevelop под Linux и такива инпути трябва да ги копирам ред по ред.
Неприятно, пробвай поне като вкараш поне 3-4 реда променливи докато не ти излезе текст, който очакваш. Друго, което забелязах е че в условието е казано че е достатъчно променливите да са от тип int, a не uint (тоест само от 0 до 2147483647), и като видях джъдж тестовете, няма подадени отрицателни стойности. И също така на ред 13 не трябва ли while да спира на Exam Over вместо само Exam?
Аз с четенето на стринга го правя на масив от стрингове с раделител шпациите. Нормалните редове почват с число, такаче и "Exam" би трябвало да е достатъчно. Може би най-чистат проверка е дали втория стринг е някоя от опаковките, но е повече писане.
Не ми е ясно, защо при недостиг на бира не се отчитат загубите. Но приемам че там се изискава колко бири не стигат, а не колко трябва да се поръчат,
Сега оставя да тазбера защо ми гърми на тест 4,5,6.