Loading...
Nukem avatar Nukem 6 Точки

[Exam Problems] C# Basics - 25 July 2014 Evening - {02}Odd and Even Jumps - problem

Момчета, може ли някой по-запознат от мен, да ми каже къде бъркам, че не мога да изкарам повече от 70%, мерси предварително!

http://pastebin.com/TNGpyxhY

Преди бях пробвал така, но резултата е още по-плачевен!

http://pastebin.com/JrPmxXD5

Тагове:
0
Programming Basics 19/08/2014 17:04:30
Filkolev avatar Filkolev 4482 Точки

Първата грешка, която виждам, е тази проверка: if ((oddJump>1&evenJump>1)&(oddJump<=100&evenJump<=100))

В изпитните задачи навсякъде се казва, че входът е валиден, т.е. излишно е да проверяваш променливите дали са в посочените диапазони - те винаги ще са в тях. Махни проверката и виж дали ще се получи - в самата проверка махаш 1 като вариант за oddJump/evenJump, а 1 е допустима стойност, може би от там идват проблемите. Ако не, кажи и пак ще погледна по някое време днес.

И друга грешка в тази проверка: правилният булев оператор "и" е &&, & е битова операция, макар че съм забелязал, че работи понякога (и все пак е грешно).

0
Nukem avatar Nukem 6 Точки

& е битова опреация знам, но и аз съм забелязал че работи и така и не свикнах да слагам &&, иначе още преди да сложа if ((oddJump>1&evenJump>1)&(oddJump<=100&evenJump<=100)), даваше 70% и затова ги сложих ограниченията данеби от там нещо!

0
crazy7 avatar crazy7 177 Точки

Нещо друго което забелязах използвай Лист вместо Масив за Odd и Even, нещо такова:

List<int> odd = new List<int>();
List<int> even = new List<int>();

Защото ако дължината на целия стринг е нечетна ти задеяш два масива делена на 2 и изрязваш един елемент. 

 

0
Nukem avatar Nukem 6 Точки

Да помислих си го това, защото отначало ми даваше 1-я отговор верен а втория грешен, при jump 3 и 2, и си мислех дали не е от масивите, ще прочета малко за лист-а, че не съм го ползвал засега!

0
crazy7 avatar crazy7 177 Точки

В този случай за List ти трябва да знаеш, че вместо ".Length", се използва ".Count". За добавяне се използва ".Add()", като в скобите пишеш стойността. А за вземането пак можеш по индексатор "[ ]". Мисля че това ти трябва за тази задача. Все пак според мен е добре да ги научиш.

0
20/08/2014 12:17:22
Nukem avatar Nukem 6 Точки

и с лист пак 70%

0
simeon_stoykov avatar simeon_stoykov 4 Точки

Здравей. Ако искаш погледни моето решение ТУК. Аз съм го направил със списъци. Първо създавам един чар масив и добавям всички чарове от въведения текст там. След тоав създавам списъците и им добавям по един нулев елемент (без значение точно какъв). Идеята е да започне обхождането на списъците от първия им елемент и той да е първия чар от въведения стринг, за да е по-лесно да се определи дали сме на чар, който съвпада със скока. Следва обхождане на чар масива и добавяне на четните и нечетните елементи в 2-та списъка. След това обхождам списъците от 1-вия (по индекс) елемент до последния и проверявам дали елемента е на позицията на скока, и ако е там умножавам текущата сума по този елемент.

0
23/08/2014 22:12:57
gstoyanov90 avatar gstoyanov90 99 Точки

Здравей,

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

Единия вариант, когато ти се чупи програмата е при тестове:

Software University SoftUni
7
4

Може да пробваш с дебъгера да видиш къде точно гърми :) Останалите  проблемни тестове може да видиш в рар-а с условията 

Прикачам решението, което си написах, върви на 100 от 100

Решение

Ако искаш мога да опитам да ти дам разяснение по код-а си. Успех :)

0
vasil.jivkov avatar vasil.jivkov 39 Точки

ако смениш BigInteger с long дава 80/100 . Но начина по който си написал логиката , на мен ми е малко трудно да разбера кода. 

0
jumparo avatar jumparo 26 Точки

Здравейте,

Може ли някой с две думи да сподели, защо взимаме от ASCII таблицата Octal number ,а не Decimal,че ми стана интересно и не намерих добро обяснение в Google?

Благодаря предварително

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