Софтуерно Инженерство
Loading...
+ Нов въпрос
filip4o avatar filip4o 4 Точки

[Programming Basics] [C++] Тръби в басейн.

Кода дава в Judge 76/100. https://pastebin.com/kJdq0Dii 

От два дни се опитвам да намеря решение, но без резултат, някой който има повече опит може ли да даде идея ?

https://judge.softuni.bg/Contests/Practice/Index/179#1

Тагове:
0
Основи на програмирането 28/09/2017 17:18:19
kolioi avatar kolioi 394 Точки
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 394 Точки

С израза (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
Lyubohd avatar Lyubohd 101 Точки

Здравей Филип,

Доколкото знам конкретно с тази задача достигането на 100/100 на език различен от C# е изключително трудно.

Решението ми на Java също дава 76/100, и в същото време същата логика разписана на C# ми донесе 100 от 100. Така че може да се каже че си достигнал максимума за тази задача на C++.

Поздрави,

Любо

1