[Lab] C# Advanced Debuging lab проблем с задача InstructionSet
Здравейте колеги,вчера се пробвах в състезанието за дебъгване в judge системата.Първите няколко кода,които качих наистина не работеха както трябва,но последният код ,който качих си работи перфектно в VS,но в judge системата ми гърми изцяло.Въпросът ми е къде бъркам?Ето това е моята версия
http://pastebin.com/qe7esZy0
ModEdit: Моля преди да пускаш нови теми прочети правилата на форума - по-конкретно т.9 и т.12
Благодаря много за критиката :) Казаното от вас много ме радва,защото разбирам,че почти съм се справил със задачата,което за мен означава много :) За напред ще се опитвам да обръщам повече внимание на такива "малки" детайли :) Поздрави
Правенето на всяка променлива на BigInteger е overkill. При положение, че двата операдна могат да бъдат най-много int.MaxValue, то операндите е достатъчно да са int, а резултатът е достатъчно да побира int.MaxValue на квадрат, т.е.long. Ако никъде по кода не увеличаваш или амаляш операндите би трябвало да проработи. Сигурни ли сте, че само с long-ове не става?
Здравей RoYal,
честно казано и на мене ми е много странно, и започвам да се чудя дали подадените числа са не са int, или пък в
а = b + c всъщност b + c не правят едно число по-голямо от int, и чак след това го присвояват на a.
Ако направя само BigInteger result = 0; или long result = 0;, и оставя всички операнди да са int - judge дава 0 точки.
Направиха ми впечатление още две подробности: написах var x = operandOne + 1; за да проверя типа данни на operandOne + 1, и като сложа курсора на var, чета 32-bit signed integer (което ще рече че при int.MaxValue + 1 резултата се чупи още преди да е присвоен?!
Виктор е измислил нещо любопитно: result = (long)(operandOne * operandTwo); или в моя вариант става
BigInteger result = 0;
result = (BigInteger)(operandOne * operandTwo);
И ReSharper ми посивява това (BigInteger) и пише Type cast is redundant - това ако значи че int.MaxValue * int.MaxValue си остава int (т.е. съвсем погрешен резултат от умножението) и чак после се каства към BigInteger - това би обяснило защо ако само резултата е long или BigInteger, а операндите са int - резултата от изчисленията е грешен и judge дава 0 точки? Ти какво мислиш?