Loading...
sievrebo avatar sievrebo 1 Точки

Задача 4. Easter Shop, Programming Basics Online Exam - 20 and 21 April 2019

Здравейте,

Моля за обяснение каква е  грешката в решението ми  на задача  Easter Shop . Принципно нулевите тестовете минават, но в judge  минават само половината тестове. Грешката, която изписва е Runtime error - Exception in thread "main" java.util.NoSuchElementException: No line found.

https://pastebin.com/508gL95J

Още един въпрос към задачата - има зададени два изхода - когато яйцата недостигат и когато е подадена команда "Close" . Обаче има и трети вариант,в който яцата са достатъчни и няма команда "Close"- тогава какъв е изходът ?

https://softuni.bg/downloads/svn/programming-basics-v4/course-directories/may-2019/2019-03/Exam/04.%20Easter%20Shop.pdf

0
Programming Basics with Java 29/04/2019 10:11:48
damesova avatar damesova 203 Точки

Здравей,

Реших ти я набързо. Можеш да погледнеш ТУК.

Относно въпроса ти: На този етап е по-лесно да си въртиш цикъла, докато не прочетеш Close. Това те подсигурява, че винаги ще имаш обстоятелство, което да го прекрати.

Когато се изпълни ще прекрати цикъла. (ПРеди това ще печаташ някакви неща, разбира се).

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

Но, понеже ако имаш Close вторият принт не би трябвало да се изпълни, вътре след изпечатването в цикъла му казваш return;

Това ще прекрати целия main(), демек цялата програма. Съответно до последния принт въобще няма да се стигне :)

Дано да съм била достатъчно обяснителна :)

0
29/04/2019 12:04:37
sievrebo avatar sievrebo 1 Точки

Здравей,

Мисля,че те разбрах. Всъщност добавих  return в моя код  и  в   judge  мина на 100%. Досега  не съм използвала  return и не ми беше много ясно мястото му. Много благодаря за отговора.

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

 

23

Buy

8

Fill

3

Buy

10

Благодаря отново !

0
29/04/2019 12:24:23
damesova avatar damesova 203 Точки

Ами доколкото виждам, ти нямаш такъв кейс, защото си казал, че програмата ще трябва да спре (а преди това да изпринти нещо) само при два случая:

Единият - когато имаш Close - Представи си, че просто "затваряш магазина" и трябва да си опишеш наличностите в някакъв дневник (какво сме имали, какво сме продали, какво е останало и ред други хрумки).

Вторият - когато така да се каже "работното време" не е приключило (съответно нямаме Close), обаче нямаме какво да продаваме или поне тая стока дето ни я иска клиентът. Тогава просто казваме "няма (толкова)" и "елате утре (например)".

Ако по твоя пример имаме достатъчно яйца и в същото време "работното време" не е свършило - то ти седиш и чакаш да дойде клиент (тоест да получиш команда) и програмата ти виси в изчаквателен режим, докато не получи вход за "купи/достави яйца" и ако "дойде клиент" след цялото това чакане ще се възобновят проверките и операциите, които си му казал да прави като има инпут.

Ако все пак искаш да имаш някакви други условия, винаги можеш да измислиш ифове при които, ако са true ще брейкне и ще върне някакъв резултат. Но в твоята задача изрично е казано, че имаш два кейса, при които спира програмата. :)

Що се отнася до RETURN:

Ако трябва да съм честна, не му е точно тук семантичното приложение, но за знанията от бейсикс върши работа и е достатъчно да знаеш, че така можеш да прекратиш цялата програма. Реално ти казваш "Каквото си правил до тук - правил! От тук нататък ми върни като резултат НИЩО." Ще учите по-напред семантично какво е това да ритърнва нещо или нищо, но не се обърквай за сега с тези подробности.

Това, което ще ти е по-полезно е да направиш разликата между BREAK и RETURN, когато ги използваш в цикъл. С BREAK прекратяваш този блок, в който го викаш. С други думи блока между къдравите скоби {...}. С RETURN направо излизаш от програмата (казано най-опростено).

 

Опитах се максимално подробно да го обясня, дано да ти е станало ясно. Успех :)

0
29/04/2019 13:06:54
sievrebo avatar sievrebo 1 Точки

Здравей отново,

Подробното обяснения беше много полезно! Благодаря много !

Понеже не ми беше ясно защо не ми се получават половината тестове, реших да опитам с различни входове и този,който дадох като пример,видях,че не дава никакъв резулат. Та затова си помислих,че не покривам може би тези случаи. Разбирам,че трябва да се покрият единствено дадените условия.

А беше ли възможно по вида на грешката "Runtime error - Exception in thread "main" java.util.NoSuchElementException: No line found." да се ориентирам къде бъркам.

Надявам се да не отнемам твърде много време от празничния ден!

0
29/04/2019 13:25:26
damesova avatar damesova 203 Точки

По принцип като ти хвърли грешка и в конзолката на IJ имаш едно пояснение на кой ред от кода ти ти се генерира това и в същото време то е кликъбъл и можеш да го цъкнеш и да те прати на реда...

0
sievrebo avatar sievrebo 1 Точки

В  IJ  не даваше никаква грешка  и си принтираше на конзолата верните отговори и на двата случая с примерните тестове, грешката се показваше  само в judge.

Благодаря отново и хубав ден ! Има много за учене :)!

0
29/04/2019 13:52:34
rossy11pavlova avatar rossy11pavlova 0 Точки

Здравейте,

весели празници!

Не е много по темата,но как отворхите файловете в решенията на задачите от 20/21 април,2019 java?На мен не ми ги отваря за разлика от всички други задачи.

Благодаря предварително!

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