Софтуерно Инженерство
Loading...
+ Нов въпрос
Anjela_Aleksandrova avatar Anjela_Aleksandrova 61 Точки

Побитови задачи.

Здравейте,

Искам да помоля някой, ако знае някакви по-лесни начини за решаване на побитовите задачи или пък се сеща за някое видео от лекциите, в които се решават по-просто, да сподели.Мерси! smiley

Ivanov.Ivan avatar Ivanov.Ivan SoftUni Team Trainer 557 Точки

Здравей,

По - лесния начин е със "стрингосване", или по - точно да се използва StringBuilder. Тъй като String е по - бавен. Всеки път когато инициализираш някой String конструктора му вика StringBuilder. Може да погледнеш някоя от подготовките за изпити, там някой от лекторите показват и решение със стрингосване. Ако си в бейсик нивото може да хванеш някой от тези които са по - напред да ти покажат кое как работи. 

Надявам се да съм те насочил. 

Успех

1
bacuty avatar bacuty 55 Точки

Между другото, това не винаги гарантира покриване на всички тестове.

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

0
14/03/2016 23:09:13
ArmenPotourlyan avatar ArmenPotourlyan 488 Точки

Бих искал да използвам темата, за да задам следния въпрос:

Ще има ли задачи с битови операции на изпита?

На презентацията от 11.03.2016, с която се откри втората част на началния курс Programing Basics Януари 2016, има слайд за изпитните задачи:

5 practical problems for 6 hours

  • Simple calculations + simple logic
  • Loops + simple logic
  • Drawing figures at the console (loops)
  • Arrays – processing sequential data
  • Matrices – processing table data

Правилно ли правя извода, че няма да има задачи с битови операции? (Или поне не във формата, която присъстваха в предишните инстанции на изпита...)

1
14/03/2016 20:01:09
Ivanov.Ivan avatar Ivanov.Ivan SoftUni Team Trainer 557 Точки

До колкото съм запознат ... няма да има. Битовете за изместени малко по - напред, но няма да минете без тях. Може да ги нямате на изпит, но със сигурност ще минете през темата :)

1
S.Asenov avatar S.Asenov 35 Точки

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

1
g.stoyanov avatar g.stoyanov 760 Точки

Само да добавя, че за мен, такова чудо като побитови задачи няма. Това са най-обикновенни задачи които по природа/най-ефикасен начин/лесно/бързо се решават с побитови операции. Просто човек трябва да ги разбере за да може да знае кога да ги прилага и как. Като за начало бих препоръчал много добре да се научат и най-вече разберат побитовите операции |, & и т.н., като се учат върху най-прости числа или по-точно приложението им върху 1 бит т.е. 1 или 0. След което може да почнем да изпробваме върху по големи числа - с повече битове. Иначе материали има в изобилие но без основите са безмислени.

П.С.: Ако има някоя задача която се чудиш как се разбира, че може да се реши чрез побитови операции, или как се решава, постни я тук и ще се опитаме да ти обясним някои принципи и методи. 

4
14/03/2016 21:04:42
Bobosam avatar Bobosam 184 Точки

Колегата е прав. Решаваш няколко задачи. Разбираш за какво иде реч. Правиш си библиотека от основните операции и ползвайки я решаваш всички побитови задачи за отрицателно време.

Успех.

-1
Filkolev avatar Filkolev 4428 Точки

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

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

3
r3v3nan7 avatar r3v3nan7 364 Точки

Здравей :) Един колега е направил нещо като cheet sheets за побитови операции. Нямам представа дали би ти помогнало, но за всеки случай ще ти дам линк

https://github.com/BogomilDimitrov/CSharpBasicsOct2014/blob/master/Online_ExamPreparation/BitWiseOperations-Cheatsheet.txt

Искрено се надявам да имаш полза от него, ако ли не се извинявам, че поста ми не е на място.

1
r3v3nan7 avatar r3v3nan7 364 Точки

Благодаря на колегата за отрицателния глас... ти се опитваш да помогнеш , а после получаваш минуси... супер.

Поне този , който ми даде thumbs down нека ми каже поне защо ? Поста ми ли не беше по темата, не е това което се иска ли ? , 

не съм сложил нещо свързано с побитовите операции или поне някакъв feedback , за да знам какво съм объркал толкова. 

Много е лесно просто да цъкнеш минус.

1
Ivanov.Ivan avatar Ivanov.Ivan SoftUni Team Trainer 557 Точки

Примери се, че има всякакви хора ....

Оправил съм ти минусчето .... поне да си на 0 :D

Успех

0
r3v3nan7 avatar r3v3nan7 364 Точки

Благодаря ти колега :) Не исках да измествам темата , но просто не разбирам и не намирах логика и затова исках да попитам какво се случва ? 

Не ми пука колко точки ще имам или за самите точки. Просто не разбирам защо когато отделиш от времето си и се опиташ да помогнеш , получаваш "-" и за това реших да попитам. В никакъв случай не искам да измествам темата 

и благодаря ти за отговора. :) Поздрави и успех

0
bond4o avatar bond4o 8 Точки

n = n & (~(1 << pos)) | (mask << pos);     //заменяне на бит с неизвестна маска
n = n ^ (1 << pos);     // обръща бит-а на дадена позиция (0 -> 1 или 1 -> 0)
n = n & ~(1 << pos);     // прави бит-а 0-ла
n = n | (1 << pos);     // прави бит-а 1-ца

0
bacuty avatar bacuty 55 Точки

Не е лошо, ама мен ако питаш , по-добре е да разбереш какво се случва на всяка стъпка, отколкото да си хардкоднеш такива неща в главата :)

0
r3v3nan7 avatar r3v3nan7 364 Точки

Мисля че намерих нещо подходящо. Стъпка по стъка колегата описва как се случват нещата. Надявам се да ти помогне

https://telerikacademy.com/Forum/Questions/6685/%D0%9F%D0%BE%D0%B1%D0%B8%D1%82%D0%BE%D0%B2%D0%B8-%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8

2
kaloyannikov avatar kaloyannikov 528 Точки

добре е в началото , а и след това да си ги разпишеш на хартия и ще ти се разяснят в пъти повече. ;)

0
borislav9212 avatar borislav9212 745 Точки

Колега, r3v3nan7, има ги всякакви не им се ядосвай. На мен също така ми дават минуси - без повод. Аз намирам инфото от теб, че е много полезно и си е точно по темата. Увеличих ти точките с 3. Благодаря за информацията.

1