Loading...
annsta avatar annsta 305 Точки

Очакваните резултати за процентите (p1 до p5) трябва да са във формат double, с int няма да се получи. Ако се изпълнят условията на проверките, променливите p1, p2.. p5 трябва да се увеличат с 1, т.е. да ги преправиш на p1++, p2++,.. p5++. Общият брояч counter можеш да го изнесеш веднага след прочитането на числото от конзолата, за да не го повтаряш при всяка проверка.

Ето моето решение (имената на променливите са различни) https://gist.github.com/astambi/9eafc366179965b14c47

2
borislav9212 avatar borislav9212 745 Точки

Благодаря ти за помощта. Видях къде са ми пропуските и я реших.

0
VladoGenov avatar VladoGenov 45 Точки

Колега и аз по-подобен начин съм решил тази задачи, само ако позволиш, да вметна, че можеш да елиминираш ++count;, понеже накрая то ти се дублира с n
Може накрая само да коригираш редовете от count1 до count5
вместо: Console.WriteLine("{0:0.00}%", 100 * count1 / count);
така: Console.WriteLine("{0:0.00}%", 100 * count1 / n);

И в двата случая е вярно, просто една идея по-бързо може би за по-сложни задачи.

2
annsta avatar annsta 305 Точки

Напълно вярно! Едва вчера и аз забелязах, че има излишно броене. Това ми е решението от междинния изпит. Явно бързането е било повечко и оптимизацията по-малко :)

1
VladoGenov avatar VladoGenov 45 Точки

Просто  елиминираш counter и след това от всяко условие премахваш реда (p1 = counter / 20 * 100;):

if (conditionN)
                {  
                   p1 = counter / 20 * 100;
                   counter++;
                 }
като го коригираш така:
if (conditionN)
                {  
                   p1++;
                 }

Като редовете ги изкарваш извън FOR-цикъла, като коригираш всичките тези редове така:

p1 = p1 / n * 100;
p2 = p2 / n * 100;
.....
p5 = p5 / n * 100;
 

В случая както ти си го направил, counter ще минава през всеки IF, чието условие се изпълни, т.е. то ще се увеличи n-пъти и резултата ще ти бъде все 100% при правилна формула и понеже делиш винаги на 20 - това означава че каквото и n да въведеш, ти винаги смяташ, че имаш въведени единствено и само 20 числа. Независимо колко цели числа ще въведеш, дали 5 или 105 числа, форрмулата ти смята само за 20 числа:
p1 = counter / 20 * 100;
p2 = counter / 20 * 100;
.....
p5 = counter / 20 * 100;

Ето и моето решение: http://pastebin.com/DqNFY2Fk

0
borislav9212 avatar borislav9212 745 Точки

Не бях разбрал условието, затова и сгреших. Трябва по повече време да се отделя на условието на задачите и да се измисли най-добрия начин за решение, а може и чертеж за някои задачи. След като колежката ми бутна едно рамо я реших ето така

http://pastebin.com/1Xxtxuq2

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