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

C# Basics Exam 10 April 2014 Morning Problem 3 – Sunglasses

Някой може ли да ми каже какво ми е грешното в решението понеже аз като пробвам с примерните input получавам желаните output , но като го пусна в judge ми дава само 10/100

Решението ми е http://pastebin.com/BtUvJxjL

Тагове:
1
Programming Basics 25/04/2015 18:50:58
Innos avatar Innos 419 Точки

Математиката с която смяташ къде да изпечаташ моста между очилата е грешна.

Печаташ лещите в един For цикъл така че дължината на i ще варира от 0 до n-3 (или иначе казано до < n-2) трябва да намериш центъра на тази поредица и понеже n е нечетно, n-3 ще е четно по нагледно пробвай с пример нека n = 9  тогава трябва да намериш формулата за числото което е по средата между 0 и 6(9-3) включително, това число е 3 (0 1 2 |3| 4 5 6)

1
25/04/2015 19:26:51
IvayloBonchev avatar IvayloBonchev 5 Точки

при n=9 работи кореткно , но при n =11 и т.н. вече се получава разминаването . И на мен ми е ясно че нещо не нацелвам правилната формула за центърът ама хич не ми идва на акъл-а в момента какво точно трябва да е така че ако не ти е проблем би ли написал какво трябва да е правилното условие 

0
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравей Ивайло,

Висчко в решението си работи супер - колегата е прав, с изключение само на това:

            else if (i == n / 3)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write("|");
                }
            }

Ако тестваш с 13 ще видиш как моста ти се измества, не е в средата. Преизчислих ти този else if (i == n / 3)

и задачата даде 100 точки в judge. Можеш да си потърсиш друго изчисление за този if, или да видиш тук новия вариант на твоето си решение.

Иначе, поздравления - основният алгоритъм на решението си е супер!

 

1
25/04/2015 19:40:56
IvayloBonchev avatar IvayloBonchev 5 Точки

Благодаря за активноста и помоща ! 

Катя като отворих твоя линк с новият вариянт на моето си решение не виждам никакви разлики във въпросният else if спрямо моето си решение можеш ли да видиш дали случайно линка не е грешен или просто да напишеш като коментар какво трябва да е правилното съдържание на въпросният else if ? Иначе аз тествах с нечетни числа до 9 и нямаше проблем , сега пробвах с 11 и 13 и видях че наистина сте прави и центърът се измества !

1
JOHNY avatar JOHNY 196 Точки

До 9 работи, защото като разделиш n на 3 получаваш средата на очилата. 
След това вече се измества.

2
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Прав си Ивайло :)

оправих линка.

Това имам предвид:

            else if (i == (n - 2)/2)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write("|");
                }
            }
1
JOHNY avatar JOHNY 196 Точки

Честно да ти кажа - овъртях се от взиране да разбера всичките цикли, които си ползвал (на този компютър съм с XP и нямам visual, а dotnetfiddle не позволява breakpoints). Ще се опитам да го пусна и през студиото по-късно.

Ето ти един мой код, който е доста по-кратък и разбираем. Judge му дава 100 точки.

В същото време показва, че твоят код се дъни на някой от тестовете, което ще рече, че при конкретни стойности резултата не е коректен.

Както вече са отбелязали колегите - проблемът е, че печаташ моста винаги при n=3, а това не е вярното условие.

2
25/04/2015 19:39:36
IvayloBonchev avatar IvayloBonchev 5 Точки

Благодаря за това че си ми показал друг вариант за решение на тази задача ! Проблема е че този тип задачи съм се научил да ги решавам с вложени for цикли понеже съм начинаещ и на този начин на решение ме беше научил един познат и за това исках съвет спрямо моето решение ,че до утре надали ще успея да науча другият начин на решаване ! Иначе е пределно ясно че с тези for цикли решението е много по трудно и объркано за разлика от твоето !

1
JOHNY avatar JOHNY 196 Точки

Всъщност този код го писах с помощта на Катя преди около 20 дни - още в началото на курса.

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

Успех на изпита!

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