Loading...
MiDimitrow avatar MiDimitrow 10 Точки

[Exam Problems] C# Basics - Problem 3 – Headphones

Здравейте, 

на тази задача ми дава следният exeption - "...'count' must be non negative .......line 26..."

Ето го кодът http://pastebin.com/Reyn7R8B  и проблемът е най-вероятно, в последният каунтър на 26-ти ред, дава отрицателна стойност до колкото разбирам и затова гърми. Проверявах стойностите за 'a' и не видях проблем. Уж всичко трябва да е наред ама не виждам къде е проблема. Ще съм благодарен ако някой го забележи и ме светне! 

Ето и линк към джъджа - https://judge.softuni.bg/Contests/52/CSharp-Basics-Exam-19-December-2014

Тагове:
0
Programming Basics
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравей Мирославе,

решението ти всъщност е хубаво и дава 100 точки в judge. Проблемът с exception-a идваше от ред 20-ти, там след като си използвал за последен път а, пак го увеличаваш: a = a + 2;. Не съм следила точно стойностите, но явно става твърде голям по стойност и в крайна сметка на 26-ти ред ето този израз получава отрицателна стойност: ((2 * n + 1) - 2 * i - 2 * a)).

Може да избягваш това като излизайки от един цикъл проверяваш стойността на променливата преди да я използваш в следващ цикъл. Решението ти даде 100 точки само с едно разместване: 26-ти и 27-ми ред си разменят местата:

            a = a - 2;
            Console.WriteLine("{0}{1}{2}{1}{0}", new string('-', i), new string('*', a), new string('-', ((2 * n + 1) - 2 * i - 2 * a)));

така намаляваме стойността на а преди да я ползваме в конкретния цикъл. И тези имена на промеливи "а, n", дават наистина много математически вид, но в програмирането ако и други хора ти четат кода е добре промеливите да имат по-описателни имена. Честно казано и аз често ползвам а, х, и други подобни имена на променливи, тъй че :)  Само казвам, че съществуват и по-добри варианти за именуване.

Поздравления за решението!

 

0
MiDimitrow avatar MiDimitrow 10 Точки

Благодаря много !

Сега след твоя коментар се чудя защо не съм забелязал , че след цикъла има още едно увеличаване на стойността и тя остава по-голяма от колкото искам да бъде за следващия цикъл ама това е .. понякога зациклям като не излиза търсеният резултат :) .

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

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