Loading...

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

ViValDam avatar ViValDam 15 Точки

[Homework] C# Basics - Operators Expressions and Statements - Problem 16** Exchange Bits (Advanced)

overloadСпоред мен третият пример в задачата е грешен - при него се получава type overload, имаме 32 битов , unsigneg integer , което означава 32 бита в позиции от 0 до 31  , а при този пример се получават от q+k = 22 + 10 = 32 позиция(такава няма!), което би трябвало да хвърли ексепшън - и на мен ми хвърля !

Но в отговора е даден нормален резултат...

Вашето мнение ? Къде бъркам ? Ако бъркам ?

Иначе ,задачата си я реших , с побитови операции, имам и оверлапинга и всички ексепшъни и всички останали стойностти ми излизат с правилни отговори - гектвах даже и тези от 15 задача,  с к = 3 - всичко правилно. Всъщност 15 задача е частен случай на 16.

На мен са ми лесни операциите с битове - ако иска някой да пита - ще помагам !

Edited: Променено e името на темата и са добавени подходящи тагове.

2
Programming Basics 18/11/2014 21:44:13
pataroka avatar pataroka 319 Точки

Никъде в условието на задачата не е упоменато, че стойностите на p, q и най-вече k трябва задължително да бъдат положителни. Ако p и q са отрицателни добре - още при първоначалната проверка ще прекъснем програмата и ще уведомим потребителя, че трябва да въведе коректни данни. Но ако стойността на k е отрицателна, това е друга работа. Това означава, че взимаме по-младшите битове спрямо първоначално зададената позиция. Демек ако p = 24, k = -3, имаме работа с битове на позиции 24, 23, 22. И понеже не ми се искаше да повтарям решенията, които видях тук, а съм много мързелив и не ми се занимаваше с шифтване на битове наляво и надясно, следвах великата българска поговорка "Учи, мама, за да не работиш." Поразтърсих се насам натам, поизпреварих хронологията на лекциите в курса и открих свещения граал за тая задачка - битов масив. Ето го и решението:

BitsExchangeAdvanced

Най-много се измъчих с вкарването на uint число в битовия масив и изкарването му оттам, тъй като няма директен метод за това. За целта и в двете посоки се минава през байт масив с 4 елемента.

Ще бъда благодарен на всякакъв фийдбек относно това решение, тъй като за първи път правя подобно нещо и вероятно кодът може да се оптимизира.

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