Професионална програма
Loading...
+ Нов въпрос
Angel_Kalinkov avatar Angel_Kalinkov 111 Точки

Задача 2 - Фирма от Programming Basics Exam - 28 August 2016 е с грешна логика на решението

Задача 2 - Фирма от Programming Basics Exam - 28 Аugust 2016 е с грешно авторско решение и съответно очаквания изход, който е заложен в Judge също е грешен. Вярно, че изпитът е по програмиране за начинаещи, но по всяка вероятност те все пак са учили преди това малко математика и лично аз съм учуден, че никой досега не е повдигнал въпрос за тази задача!

От обясненията за решението, дадени в условието на задачата, става ясно, че за да се намери общия брой отработени часове за цялата фирма, се събират редовните часове, отработени от един служител, с извънредните часове, отработени от всички служители!? За да бъде решена коректно задачата, трябва да се сумират редовните часове, отработени от всички служители с извънредните часове за всички служители.

Изпитът вече е минал и заминал, но все пак е добре тази задача да бъде коригирана, за да не се шашкат докато я решават тези, които се подготвят за следващите изпити по Programming Basics.

Тагове:
0
Предложения и проблеми 24/01/2018 21:20:29
veronikaaa86 avatar veronikaaa86 365 Точки

Здравей,

шашкане няма. Мисля, че си пропуснал някои неща в условието и в обясненията. Общите часове в първия пример са:

"Фирмата разполага със 7 дена.

10% от които отиват за обучение, следователно часовете за работа са: 6.3 * 8 = 50.4 часа." - това са ти "редовните" часове!

След това се изчисяват часовете на служителите, работещи извънредно:

"3 служители работят извънредно – 3 * (2 часа за 7 дена) = 42 часа."

И накрая се събират общите часове (минус 10% за обучение) + служителите, работещи извънредно.

"Общо часове = 50.4 + 42 = 92.4 часа -> 92 часа > 90"

Ето моето решение на Java:

https://pastebin.com/itguxx34

0
Angel_Kalinkov avatar Angel_Kalinkov 111 Точки

6,3 * 8 означава, че умножавате дните, в които е работено, по 8 работни часа за всеки ден. Така получавате 50,4 работни часа, изработени през редовното работно време от ЕДИН СЛУЖИТЕЛ. Защо ги събирате с овъртайма на всички служители?! Така няма да получите общия брой отработени часове от всички служители във фирмата, които да сравните с необходимото време за изработване на проекта.

От решението Ви става ясно, че за намирането на извънредните часове умножавате 2 часа по броя на служителите по пълния брой на дните. Това също е грешно, след като в условието е казано: "През 10% от дните служителите са на обучение и не могат да работят по проекта." Логично е, че докато са на обучение, служителите не могат да работят както редовно, така и извънредно.

Освен това в условието има леки неясноти. Казано е, че на третия ред на входа се подава " броят на служителите, работещи извънредно". Формулирано така, у четящият остава впечатление, че този брой е различен от общия брой на служителите. Но поради липсата на друга информация сме принудени да приемем, че всъщност това са всички служители и всички са работили извънредно. При така зададено условие това е моето решение, което без да се шашкам, продължавам да твърдя, че е вярно:

https://pastebin.com/Fjwenvzj

0
13/10/2017 13:38:42
Somma avatar Somma 2 Точки

Здравейте, г-н Калинков! 

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

Да не говорим, че аз пък четейки условието имах още по друго решение (схващане на задачата), но естествено Djuge-a не я прие! :-)))

Грешката си е в книгата, но и аз съм озадачен, как е възможно толкова време (2 години) никой да не обърне внимание, че задачата е неправилно описана там - и условието е подвеждащо и насоките и подсказките са объркващи. 

Аз съм подготвил едно обяснително писмо до г-н Наков, за корекция в книката, но за жалост до сега не усетих да има заинтересованост от страна на СофтУни по въпроса с грешките. 

0