Loading...

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

kolioi avatar kolioi 641 Точки
Best Answer

Ето ти решение на C# https://pastebin.com/8cUDpDTq

и решение на C++ https://pastebin.com/1UGbw62B

И двете дават 100/100 точки в Джадж. Уловката тук е (и това не е споменато в условието!) когато има препълване, да отпечаташ с колко литра е прелял басейна само с една цифра след десетичната точка.

Също така, обърнете внимание на времето за изпълнение и големината на използваната памет от двете програмки:

C# Memory: 7.73 MB Time: 0.013 s

C++ Memory: 1.87 MB Time: 0.003 s

 

0
filip4o avatar filip4o 4 Точки

Благодаря за отговора, не бих се сетил така да го напиша, но не разбирам логиката зад втория (int)  в уравнението?

int x = (int)((V1 + V2) * 100.0 / V),

0
kolioi avatar kolioi 641 Точки

С израза (V1 + V2) / V изчисляваме каква част от басейна е напълнена и след това го умножаваме по 100 за да получим проценти. Тъй като резултата е реално число (double или float) с (int) го тайпкастваме (typecast/преобразуваме) към цяло число, иначе компилатора дава предупреждение (warning).

За cout.precision() виж примера в MSDN - двата случая когато се употребва (с и без fixed), какво връща и каква стойност има по подразбиране.

https://msdn.microsoft.com/library/0f9e0abc-f70f-49bc-aa1f-003859f56cfe.aspx#ios_base__precision

0
filip4o avatar filip4o 4 Точки

Разбрах къде греша, благодаря за насоките.

0
kolioi avatar kolioi 641 Точки

Ами ти почти го беше направил smiley

Само да допълня нещо за тайпкастването. Това, което аз съм направил се използва предимно в С. В С++ е по-добре да го направиш така int x = int( (V1 + V2) / V * 100 ) или така int x = static_cast<int>((V1 + V2) / V * 100).

Също така за форматиране на изхода в С се използва printf(), както и snprintf() (обаче избягвай да използваш sprintf()). Същите функции може да ги използваш и тук.

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