Професионална програма
Loading...
Poddy avatar Poddy 17 Точки

Exam 06-07 July 2019, задаче 4 Renovation

Здравейте,

Решавам задачата и така : https://pastebin.com/Ra1pzPeM и така : https://pastebin.com/NWvDHUeF и резултата е между 50 и 75 точки. В PyCharm минава и с дебъгер също. Явно има нещо, което пропускам. Някой може ли да помогне?

 

Реших проблема, но реално погледнато не мога да разбера какво точно не е наред.
Ако пресметна площа за боядисване така:

area = math.ceil(height_wall * width_wall * 4 * ( 1- percentage_not_painting / 100))

не минава и дава грешни отговори на два теста и съответно 75 точки.
Ако обаче пресметна площа като я разбия на няколко компонента решението минава:

walls = height_wall * width_wall * 4
no_paint_area = walls * percentage_not_painting / 100
area = math.ceil(walls - no_paint_area)

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

Тагове:
0
Programming Basics with Python 06/05/2020 16:30:06
Dimitar_Dimitrov93 avatar Dimitar_Dimitrov93 2 Точки

Здравейте,

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

walls = height_wall * width_wall * 4
==> walls = (height_wall * width_wall) * 4
no_paint_area = walls * percentage_not_painting / 100
==> no_paint_area = (walls * percentage_not_painting) / 100

Условието на задачата е програмата да следи дали е дошла команда "Tired!" или всички стени са били боядисани. С While цикъла следим за въпросната команда, но трябва да проверяваме и дали стените са боядисани. Аз също достигах само до 75 точки без да виждам реална причина за проблем.

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

https://softuni.bg/forum/28031/renovation-izpitna-zadacha

Например, ако на конзолата получим 4-ри реда с литри боя, а още на 3-тия ред имаме достатъчно количество боя, за да боядисаме стените, последният входен ред(4-ти) няма да бъде прочетен. Съответно тези литри боя няма да бъдат сметнати в общия остатък. След като коригирах този проблем с едно експериментално за мен решение с if проверка и break, получих 100/100 в Judge.

        if (totalAreaCovered >= totalAreaToCover) {
            paintQuantityInLiters = Number(input.shift());
            if (paintQuantityInLiters > 0) {
                totalAreaCovered += paintQuantityInLiters;
            }
            break;
        }

Прилагам своето решение, въпреки, че е за JavaScript.

https://pastebin.com/7DsbP6Ws

Може да прегледате и другите постове за тази задача във форума:

https://softuni.bg/search/results?SearchTerm=Renovation&Questions=true

Надявам се да съм бил полезен до някаква степен. Успех ;)

1
09/05/2020 22:38:44
l.markov avatar l.markov 1 Точки

Здравейте,

Дали може съдействие за откриване на грешката

https://pastebin.com/Kki6BZj0

Получавам 87/100 точки в judge. Гледах примерните решения и за другите езици, но нещо така и не успявам да хвана къде какво точно изпускам.

0
kaleanna avatar kaleanna -7 Точки

that's good information, the article provides a lot of useful information, but I still can't find the answer. 

 word finder

-1