Loading...
evtimovgeorgi avatar evtimovgeorgi 0 Точки

Problem02.PoolPipes

Здравеите колеги!Днес реших да седна да почопкам задачите от предварителният изпит.Първата мина добре взех 100/100,но срещнах затруднения с втората задача.На какъвто и да калкулатор да го сметна внига излиза,че процентите на тръбите са (P1=45%/P2=54%),но когато стартирам програмата в конзолата и съответно Judge-а програмат изкарва (P1=30%/P2=36%).Много ще съм благодарен на добрият човечец който ми обесни,защо става тази магия.Ето го решението ми на задачата!Kind regards!

            var VofthePool = int.Parse(Console.ReadLine());//1000
            var P1 = int.Parse(Console.ReadLine());//100
            var P2 = int.Parse(Console.ReadLine());//120
            var H = double.Parse(Console.ReadLine());//3

            var littresOfP1 = P1 * H;//300
            var littresOfP2 = P2 * H;//360
            
            var allTheLittres = littresOfP1 + littresOfP2;//660
            var percentOffullnes = (allTheLittres / VofthePool) * 100;//66%
            
            var percentOfP1 = (littresOfP1  / VofthePool * 100);//45%
            var percentOfP2 = (littresOfP2 / VofthePool * 100);//54%
            
            if (VofthePool > allTheLittres)
            {
                Console.WriteLine("The pool is {0}% full. Pipe 1: {1}%. Pipe 2: {2}%.",percentOffullnes,percentOfP1,percentOfP2);
            }
            else
            {
                Console.WriteLine("For {0} hours the pool overflows with {1} liters.",H,allTheLittres-VofthePool);
            }
           

Тагове:
-1
Programming Basics
Thenis avatar Thenis 219 Точки
Best Answer

Делиш процентите грешно.

var percentOfP1 = (littresOfP1  / VofthePool * 100);//45%
var percentOfP2 = (littresOfP2 / VofthePool * 100);//54% 

Виж условието пак

 

Първата тръба е допринесла с 45% (300 от 660 л.).

Втората тръба е допринесла с 54% (360 от 660 л.).

 

Ти делиш на целият обем.

Трябва да ти е ето така

var percentOfP1 = (littresOfP1  / allTheLittres* 100);//45%
var percentOfP2 = (littresOfP2 / allTheLittres* 100);//54% 

 

После на if-фа трябва да има >= т.е. (VofthePool >= allTheLittres)

След това ти трябват цели числа за процентите при output-та. Има няколко начина да направиш това.

Можеш с Math.Floor

С Math.Truncate

Или просто да кастнеш променливите с (int)

Console.WriteLine("The pool is {0}% full. Pipe 1: {1}%. Pipe 2: {2}%.", (int)percentOffullnes, (int)percentOfP1, (int)percentOfP2);

С Math.Floor

Console.WriteLine("The pool is {0}% full. Pipe 1: {1}%. Pipe 2: {2}%.", Math.Floor(percentOffullnes), Math.Floor(percentOfP1), Math.Floor(percentOfP2));

С Math.Truncate

Console.WriteLine("The pool is {0}% full. Pipe 1: {1}%. Pipe 2: {2}%.", Math.Truncate(percentOffullnes), Math.Truncate(percentOfP1), Math.Truncate(percentOfP2));

 

Внимавай като четеш условието.

2
28/03/2016 18:27:24
evtimovgeorgi avatar evtimovgeorgi 0 Точки

Суперр,благодария за бързия и точен отговор!

0
petar.dimitrov.86 avatar petar.dimitrov.86 450 Точки

В този случай, те искат от теб процентите, която всяка една траба пълни, спрямо общото количество, което се запълнили, а не обема на самия басейн. тоест var percentOfP1 = (littresOfP1  / VofthePool * 100); трябва да ти е var percentOfP1 = (littresOfP1  / allTheLittres * 100); Аналогично и за второто

1
28/03/2016 17:58:42
evilsoldier avatar evilsoldier 2 Точки

Ето ти и едно решение с закръгляния до по-ниската стойност.

http://pastebin.com/bqftrhBp

1
evtimovgeorgi avatar evtimovgeorgi 0 Точки

Благодаря колега! :)

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