Loading...

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

mihailgalev avatar mihailgalev 1 Точки

Coding 101 Exam - 6 March 2016,04. Histogram помощ.

Здравейте, колеги!

Решавам една стара изпитна задача: https://judge.softuni.bg/Contests/Practice/Index/169#3 

Ето го кодът: https://pastebin.com/TTNQyPsu

Въпросът ми е, защо при пускане на програмата, за процентите ми изписва 00.00% и на 5те реда. Локалните тестове преди да вкарам процентите си работят и ми изписва колко числа са под 200 и т.н.

 

Тагове:
0
Programming Basics 03/07/2018 16:01:43
NikolayNeykov92 avatar NikolayNeykov92 617 Точки

Здравей,

промени си променливите nums да са от тип double, защото иначе извършваш целочислено делене.

            double nums1 = 0;
            double nums2 = 0;
            double nums3 = 0;
            double nums4 = 0;
            double nums5 = 0;

0
03/07/2018 16:04:42
clipro avatar clipro 73 Точки

Грешката е в начина на изчисление на процентите.

Променливата е вярно декларирана като double, по после, при изчислението се делят цели числа и се умножават отново по цяло число.

p1 = nums1 / n * 100;

Получава се целочислено деление, което винаги дава нула (напр. 5 / 12 * 100 = 0 * 100 = 0). За да се избегне ефектът трябва в уравнението да име поне един елемент от типа double. Най-лесно е към стотицата да добавим две нули - 100.00. Уравнението би изглеждало така

p1 = nums1 / n * 100.00;

И отново ще даде 0,00%, защото операциите се извършват в поредност от ляво надясно. За правилна калкулация има два варианта, или да преместим стотицата преди делението, или да използваме скоби:

p1 = nums1 * 100.00 / n;

p1 = nums1 / (n * 100.00);

Знам, че на mihailgalev това решение едва ли ще му бъде вече особено полезно, но се надявам да свърши работа на някой друг.

Ето и цялостно решение на задачата 100/100

https://pastebin.com/2TjWjS8F

 

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