Loading...
archlicher avatar archlicher 32 Точки

[Homework] C# Basics - Problem {15*} Joro, the Football Player

Колеги, имам следното питане.

Задача 15 от второто домашно ни пита колко пъти Жоро ходи да играе (квартален) футбол:

1/2 от почивните дни (различни от събота и неделя)

2/3 от нормалните уикенди (когато не е уморен)

всеки уикенд в родния град.

Като разделим условието по дни ми се получава следното:

1) само в половината от всички почивни дни - това не се променя = 1/2 holydays

2) всеки нормален уикенд играе и в събора и в неделя - на всеки нормален уикенд се падат по две играения, т.е. формулата тук се променя - 2/3 * нормални уикенд * 2

3) всеки уикенд в родния град, но само в неделя - и тук не се променя.

По този начин с първите данни от таблица ми излизат 71 игри, а не 38.

Да, когато махна допълнителното умножение за нормалните уикенди получавам 38. И в системата за оценяване го приема за вярно

 

Къде бъркам?

Благодаря

 

 

Тагове:
3
Programming Basics
nikolay.dimov83 avatar nikolay.dimov83 143 Точки

Дай кода даго погледнем, така е малко трудно да се отговори

0
Filkolev avatar Filkolev 4482 Точки

(Извинявам се предварително за лошото форматиране, но не ми излизат инструменти да си оправя оформлението на текста).

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

Изглежда това е модифицирана задача, като е било променено условието, но това не е отразено в решението. Т.е. действително би трябвало във втората част да се умножава не по 2/3, а по 4/3. Ако си смениш формулата, за да отговаря на посоченото в условието решение, системата би трябвало да ти даде 100/100 точки (ако няма грешка някъде другаде разбира се).

2
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

И да даде код няма значение. Наистина в judje системата е зададено грешно условие и съответно приема грешния отговор 38 за верен. То и аз се подведох по comments колоната в таблицата от условието на задачата...  При 50 нормални weekend-a Joro играе само в 2/3-ти от тях -> играе 33.33 weekenda. Но пък е казано, че когато не е уморен играе и събота и неделя, така че 33.33 * 2 = 66.66   Затова колегата получава 78 и отговора му е верен.

2
mihayloff14 avatar mihayloff14 824 Точки

Здравейте, доста често са задавани въпроси свързани с точно този проблем. Подобни теми: ТУК и ТУК

Проблемът идва от това, че в условието на задачата от самия изпит, то е следното:
Joro is not tired in 1/3 of the normal weekends

Докато в условието от домашното:
Joro is tired in 1/3 of the normal weekends

 

Явно грешката е техническа при "преписването" на задачата, но примера, който е даден отдолу отговаря на условието от изпитната задача (първото). Затова да приемем, че то е "правилно". smile

1
Atanasov_88 avatar Atanasov_88 39 Точки

Здравей, може ли малко помощ относно решаването на тази задача. В judge системата ми дават 90 точки, но така и не мога да открия грешката...

Решение:

0
ZvetanIG avatar ZvetanIG 907 Точки

Здрасти,

съгласен съм с теб, че има нещо сбъркано в условието.  Там пише, че в нормалните седмици той играе два пъти в седмицата. Веднъж в събота и веднъж в неделя.  Какво се прави в такъв случай? 

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

Провери логиката и с останалите тестове и ако всичко е ок. Приложи я в твойто решение.

0
Filkolev avatar Filkolev 4482 Точки
Според мен в крайна сметка ако на изпит се падне такава задача, която нещо не е наред, разумното е да се водим по даденото решение и така да си събмитнем кода. Едва след това може да се обърнем към някой от университета и да посочим несъответствието. Глупаво е в изпитна обстановка да се обясняваме къде логиката е сбъркана и да губим време, още повече че в рамките на изпита нищо не може да се направи по въпроса.
0
ZvetanIG avatar ZvetanIG 907 Точки

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

1
Filkolev avatar Filkolev 4482 Точки

В случая пролемът е в задачата. Прочетете внимателно условието и ще видите, че алгоритъмът, който е зададен като решение, не отчита факта, че Жоро играе два пъти в "нормалните уикенди" - и събота, и неделя.

Това, че хората изкарват по 100 точки на задачата не променя нещата; аз също изкарах 100 точки вчера. Но това, което направих, не беше да реша задачата, както е по условие, а да си нагодя моя алгоритъм към зададения в примерите алгоритъм. Това е един вид като отидеш на изпит в университета вместо да се концентрираш върху материала, да изиграеш изпитващия, защото знаеш какво той очаква да чуе. Изкарваш 6-ца, но не си решил проблема.

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

3
Hristo_Penchev avatar Hristo_Penchev 389 Точки

Явно тази задача съществува из виртуалното пространство в няколко варианта. Така или иначе качената за домашно в курса Май С# казва в условието едно, а в примера друго. И явно условието, зададено в judge системата се различава от това, зададено в домашното. Не е болка за умиране де. Просто ми отне време да го разбера.

-1
simeon_stoykov avatar simeon_stoykov 4 Точки

Здравейте. Според мен в авторското решение има грешки. Първата е, че в условието в задачата на изпита пише "не е уморен през 1/3 от седмиците", тоест във формулата трябва да се ползва 1/3, защото е уморен 2/3 от седмиците. В другото условие (това от C# Basics курса) пише, че е уморен 1/3 от седмиците, което означава, че тогава трябва да се вземе 2/3 за формулата. Може би от там идва грешката в решението, заради различните условия. Това е едното. Другото е, че пише че той играе 2 пъти седмично, когато не е уморен и когато не си е в родния град, което означава, че трябва да имаме по 2 във формулата, което липсва в авторското решение. Тоест частта за игрите през уикенда трябва да е (52-h)x2/3x2. Освен това в авторското решение не е заложен код за случаите, в които имаме невалиден инпут в козолата, което също го прави донякъде некоректно според мен. Ето моя код: 

Mod Edit: Нарушена точка 12 от Правилата.

Според вас верен ли ми е кода? Защото Judge системата ми дава 20/100, а не виждам някъде да имам грешка по кода.

0
27/01/2015 16:25:00
mclaud85 avatar mclaud85 28 Точки

В задачите на изпита си пише , че "input"-a винаги ще е валиден и няма нужда от проверка за невалидни входни данни, отностно грешката ти  "int playT/int playF" трябва да са ти от тип "double" и  след това да се отпечата закръгления резултат.

 

                double playF = (double)1 / 2 * p + (double)(52 - h) * 1 / 3 * 2 + h;
                Console.WriteLine(Math.Floor(playF)); 

като я преправих така имаш 100/100 :)

1
Hristin avatar Hristin 2 Точки

int playF = 1 / 2 * p + (52 - h) * 2 / 3 * 2 + h; 

*int playF = (p/2) + (52 - h) * 2 / 3 + h;

 

int playT = 1 / 2 * p + (52 - h) * 2 / 3 * 2 + h + 3;

*int playT = (p / 2) + (52 - h) * 2 / 3 + h + 3;

Имаш няколко излишни сметки, така става и без да ги сменяш да са от тип "double". пак дава 100/100. :)

1
simeon_stoykov avatar simeon_stoykov 4 Точки

Наистина колега като смених това 1/2*p на (p/2) и махнах *2 от формулата - то трябвало да го няма просто, защото трябва да се смята с условието от изпита(1/3 от времето НЕ Е уморен и това се умножава по 2, защото играе в Събота и Неделя и остава само 2/3 във формулата), а условието от курса C# основи явно е объркано, защото там пише, че Е уморен 1/3 от времето. Даде 100/100 без да променям нищо друго. Но 1/2*p не е ли равно на (p/2) или аз греша? Или просто judge системата е много прецизна и за най-малката разлика дава, че ти е грешно решението, защото и с 1/2*p сметките бяха коректни и програмата работеше, а judge системата ми даваше: Грешка при компилация.... Иначе, ако го променя така както каза  mclaud85 пак дава 100/100. Явно при double типа не му пречи, че е 1/2*p, а при Int му пречи и дава грешка при компилация...  

0
boyanov avatar boyanov 65 Точки

Това е моето решение на задачата Joro the football player от този изпитен вариант.

0
pgboev avatar pgboev 7 Точки

Вижте сега, и в двете задачи се получава същото, защото нали при едната играе по 2 пъти ама само 1/3 от почивните дни. Еми умножи 1/3 по 2 и пак става 2/3, затова задачите имат еднакво решение ... Тия работи дето ги правите да умножите първо по 2/3 после по 2 са напълно излишни cheeky

0
02/06/2015 14:50:30
nikolaykk avatar nikolaykk 94 Точки

Здравей Колега,

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

Ето условието, което аз чета:

Joro loves a lot to play football. He used to play for his local village club “Pantera” Kaloyanovets. However, he is a programmer now and he is very busy. Now he is able to play only in the holidays and in the weekends. Joro plays in 1/2 of the holidays and once in the weekends, but not every weekend – only when he is not tired and only when he is not going to his hometown. Joro goes at his hometown h weekends in the year. The other weekends are considered “normal”. Joro is tired in 1/3 of the normal weekends. When Joro is at his hometown, he always plays football with his old friends once, at Sunday. In addition, if the year is leap, Joro plays football 3 more times additionally, in non-weekend days. We assume the year has exactly 52 weekends.

Според мен задачата е коректна.

0
pgboev avatar pgboev 7 Точки

Това е условието, което се сваля от системата : http://judge.softuni.bg/Contests/2/CSharp-Basics-Exam-10-April-2014-Morning

Условията имат 2 разлики, обаче решението е едно и също ...

Joro loves a lot to play football. He used to play for his local village club “Pantera” Kaloyanovets. However, he is a programmer now and he is very busy. Now he is able to play only in the holidays and in the weekends. Joro plays in 1/2 of the holidays and twice in the weekends: each Saturday and each Sunday, but not every weekend – only when he is not tired and only when he is not going to his hometown. Joro goes at his hometown h weekends in the year. The other weekends are considered “normal”. Joro is not tired in 1/3 of the normal weekends. When Joro is at his hometown, he always plays football with his old friends once, at Sunday. In addition, if the year is leap, Joro plays football 3 more times additionally, in non-weekend days. We assume the year has exactly 52 weekends.

Your task is to write a program that calculates how many times Joro plays football (rounded down to the nearest integer number).

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