Loading...
PavelKolashev avatar PavelKolashev 5 Точки

Тръби в басейн

Здравейде някой може ли да ми каже защо конзолата не ми пресмята този ред: "int poolPrFull = (int)(poolWater * (100 / poolV));".Остава 0.

 

  var  poolV= int.Parse(Console.ReadLine());
            var P1Deb = int.Parse(Console.ReadLine());
            var P2Deb = int.Parse(Console.ReadLine());
            var time = double.Parse(Console.ReadLine());

           var poolWater = ((P1Deb + P2Deb) * time);
            int poolPrFull = (int)(poolWater * (100 / poolV));
            int P1Pr = (int)((P1Deb * time) * (100 / poolWater));
            int P2Pr = (int)((P1Deb * time) * (100 / poolWater));

            if (poolV < poolWater)
            {
                Console.WriteLine("For {0} hours the pool overflows with {1} liters.", time, poolWater - poolV);
            }
            else
            {
                Console.WriteLine("The pool is {0}% full. Pipe 1: {1}%. Pipe 2: {2}%.", poolPrFull, P1Pr, P2Pr);
            }
 

Тагове:
0
Programming Basics
krasi1105 avatar krasi1105 380 Точки
Best Answer

За да получиш 0 от умножение трябва един от множителите да ти е нула или резултата преди кастването да е в интервала (-1;1). Ако разделиш 100 на всяко по- голямо от 100 число целочислено ще получиш 0.

0
08/11/2019 00:37:39
PavelKolashev avatar PavelKolashev 5 Точки

Кастването не действа ли върху крайния резултат в израза? Ако действа на всяко действие в израза значи там е проблема.

0
26/02/2017 15:41:33
krasi1105 avatar krasi1105 380 Точки

Кастването действа на следващия го израз, като скобите се приемат за един израз. Надявам се този пример да ти го разясни:

int x = (int)0.5; // x = 0
int y = (int)(0.5 + 0.5); // y = 1
int z = (int)0.5 + (int)0.5;// z = 0

 

0
26/02/2017 17:02:01
PavelKolashev avatar PavelKolashev 5 Точки

В такъв случай (int)(660 * (100 / 1000)) =66 а ми излиза 0

0
krasi1105 avatar krasi1105 380 Точки

100 / 1000 е нула, ако искаш да делиш с дробна част сложи 'd' или ".0" след някое от числата.

0
PavelKolashev avatar PavelKolashev 5 Точки

Дааа, много съм зле. Мерси много!!!

0
AntonPetrov avatar AntonPetrov 491 Точки

Да, защото 100/1000=0

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