Професионална програма
Loading...
+ Нов въпрос
milkokochev avatar milkokochev 10 Точки

[Homework] C# Basics - Primitive Data Types and Variables - Problem {19}** - Bits Inverter

Търсих във форума, но не открих постове за тази задача.

В главата ми се въртят няколко варианта за решаването и, но за съжаление познанията ми не стигат за да ги рализирам :)

Ще споделите ли вашите опити?

Тагове:
2
Programming Basics 07/11/2014 18:37:57
fricer avatar fricer 23 Точки

И на мен битовите операции не са ми силната страна, затова я направих със string. Цък smile

1
a.angelov avatar a.angelov 1317 Точки

Здравейте,

ето моето решение на задачата, надявам се да ви помогне:

Problem 19. BitsInverter

0
mihayloff14 avatar mihayloff14 825 Точки

Здравейте,

Ето ТУК съм постнал решенията си на Exam problems от домашното. Решенията имат и коментари, в които обяснявам какво точно правя, за да е по-ясно. 

Надявам се да ви е полезно. smile

0
milkokochev avatar milkokochev 10 Точки

много благодаря, доста интересни и различни вариации :)

0
petbaik avatar petbaik 15 Точки

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

Линк към кода - Цък

0
Filkolev avatar Filkolev 4485 Точки

Не съм гледал обстойно (разбирай - да дебъгвам във VS), но ми прави впечатление този ред:

int pos = 8 - (k % 8);

к % 8 ти дава резултат между 0 и 7, т.е. 8 - (к % 8) винаги ще е число между 1 и 8, докато позициите, които те интересуват, предполагам са между 0 и 7. Т.е. вероятен проблем - не може да промениш бита на позиция 0, когато е нужно; друг вероятен проблем - понякога променяш бит, който не трябва (позиция 8).

0
BorisSimeonov avatar BorisSimeonov 26 Точки

Ето го и моето решение на проблема. Операциите се изпълняват доста бързо. С малко преправяне, кода може да се съкрати още.

Решение: Bit Inverter

0
svetlozar_kirkov avatar svetlozar_kirkov 11 Точки

Ето и мой малко груб вариант отпреди месец и нещо: Bits Inverter

0
yankozlatanov avatar yankozlatanov 10 Точки

Здравейте,

Това е което успях да скалъпя по тази задача http://pastebin.com/zDbPezVD , но judge-а ми изкара 80 / 100 , всички тестове без последните 3 ми ги дава ОК.

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

 

0
Kamigawa avatar Kamigawa 750 Точки

Здравей колега,

проблемът на задачата ти е, че при големи стъпки някои числа се прескачат и понеже създадения масив има по подразбиране числа 0, те си остават нула. На 19 ред може да присвояваш веднага след числото стойност в масива (print[i] = number;)и след това от if-a ако влезе то ще си я сменя. Така да 100 точки в джъджа (пробвах).

След като това е казано - имай в предвид, че задачата може да се реши по-лесно и без масиви. Може числото да се принтира на конзолата веднага след като е манимулирано - ако има нужда, ако не да се принтира началното число и пак ще работи за 100 точки в джъджа. Също така може да ползваш една променлива index % 7, което да ти дава текущата позиция в числото. И не на полседно място - опитай се да ползвай малко по-разбираеми имена на променливи (съвет) - ще направи четенето на кода от други много по-лесно, например променливата "а" , която я има не дава никаква информация за това каква е функцията й.

Надявам се съм бил от полза и успех!

1