Професионална програма
Loading...
malkstor avatar malkstor 348 Точки

[Homework] Programming Basics - Loops - 24**.BitRoller

Здравейте,

Изпитвам малко затруднения със последната задачка от домашното за цикли. Проблема е, че не минава всички тестове (80/100). Разгледах и двете авторски решения в Judge-a, те работят принципно различно: генерира се ново 0 число и се попълва бит по бит. На мен обаче си ми харесва повече моето :) и се чудя кои са случаите, в които дава грешка. Ето го и решението ми: http://pastebin.com/nnkQjMjK

Логиката ми е че когато първия бит (позиция 0) стане последен (позиция 18) се получава изместване на дясно с един бит. Вземам стойността на първия и го слагам последен след изместването. Преди това съм си запазил и стойностите на замразения бит, както и на този от ляво на него. След изместването си връщам стойността на замразения бит, а понеже по правило бита, който е бил от негово дясно вече трябва да е от негово ляво, сетвам левия бит след изместването със стойността на десния преди това.

Явно обаче не работи за 2 от случаите.

0
Programming Basics 08/04/2015 11:32:58
nakov avatar nakov SoftUni Team Trainer 5298 Точки
Best Answer

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

3
malkstor avatar malkstor 348 Точки

Много благодаря, намерих си грешката :) При замразен 0-лев бит копирам стойността му на последно място за всеки roll.

0