Loading...
ladymira avatar ladymira 5 Точки

Problem 17. * Different Integers Size

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

Дава ми 85 от 100 точки на тази задача и не мога да разбера къде ми е грешката. Ето кода на решението  ми:

pastebin.com/221jTJbw

Всички тестове в джъджа са ми верни, само последния 11-ти ми дава грешка, но няма как да видя входа, който се подава. Моля ви, ако някой има 100 точки на тази задача, помогнете ми да си оправя грешката.

Тагове:
0
Programming Fundamentals 26/05/2016 19:56:15
pezereto avatar pezereto 15 Точки

Пробвай да допълниш с ulong и кажи има ли ефект.

 

0
ladymira avatar ladymira 5 Точки

Е, не, с ulong-а точките ми падат на 71. Пък и то ulong не е включен изобщо в условието на задачата.frown

0
pezereto avatar pezereto 15 Точки

Пробвай  тогава друг подход мисля че имаше нещо от сорта  tryParse което връщаше bool и даже ще ти съкрати кода доста.

 

0
pezereto avatar pezereto 15 Точки

Май е синтактична грешка при short.maXvalue липсват типове в който може да се хване ,

1
26/05/2016 16:59:24
xanderbg avatar xanderbg 53 Точки

В Judge системата като натиснеш на бутона "Детайли", който е срещу точките ти, можеш да видиш тестовете. В тестовете се вижда какъв вход и какъв изход се ползва за теста. BTW аз съм го направил с BigInteger. Най-вероятно ти се чупи, защото в някой от тествете се вкарва число по-голямо от long.

*Сори, но на компютъра, на който съм в момента, не мога да ти отворя кода.

0
26/05/2016 19:37:27
ladymira avatar ladymira 5 Точки

На "Детайли" ми показва само кой тест ми е верен и кой не, ама самите тестове какви са никъде не мога да ги видя, не се вижда никъде какъв е входа, който се подава.

Интересно ми стана с този BigInteger как си го направил, след long ли го слагаш или къде? Моля, когато имаш възможност, качи си решението, интересно ми е да го видя.

0
xanderbg avatar xanderbg 53 Точки

На някои от тестовете (повечето) когато са сгрешени ти пише очакван изход и твоя изход, а над тях има бутон "Покажи входа". Eто и моето решение за 100/100 с BigInteger: цък

1
26/05/2016 19:37:51
xanderbg avatar xanderbg 53 Точки

Поправка - явно бутон "Покажи входа" го има само на нулевите тестове.

0
26/05/2016 19:38:29
alex1966 avatar alex1966 255 Точки

85 може да  ти даде макс, за това решение, аз правя един list и, ако се try-parse-нат ги вкарвам в листа и после ги принтя и дава 100/100, това е малко заобиколно защото използвам string-ове.. не знам дали е много вярно, но работи
http://pastebin.com/WA9VJzD4
EDIT: Аз го мъчих по този твоя начин, около 20-30 пускания в Judge, но само по 85, и реших да го направя със string-ове

2
26/05/2016 17:15:54
ladymira avatar ladymira 5 Точки

Благодаря, колега, твоя начин работи, хитро си се сетил с този list. Поздрави!

1
KrasimirPetkov avatar KrasimirPetkov 328 Точки

В кода имаш:

sbyte number = sbyte.Parse(input);
            Console.WriteLine("{0} can fit in:", number);
            Console.WriteLine("* sbyte");
            Console.WriteLine("* short");
            Console.WriteLine("* int");
            Console.WriteLine("* long");

sbyte е с обхват [-128, 127], а byte е с обхват [0, 255] - съответно числото 100 например става за sbyte и byte, но твоята програма ще върне само sbyte. Накратко: проблемът идва от там, че signed и unsigned типовете имат диапазон, в който стойностите им се застъпват.

По-лесен вариант (по-малко писане) е да използваш TryParsehttp://pastebin.com/rz9ZMCvy :)

 

1
26/05/2016 18:23:12
ladymira avatar ladymira 5 Точки

Бладодаря, колега! Да, определено някъде от sbyte или от byte ми идва грешката, добавих редовете, които съм изпуснала, но така или иначе не можах с моето решение да го нагодя до 100 точки.

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

0
Housey avatar Housey Trainer 129 Точки

Колеги, ето едно функционално решение с едно класче което носи 100/100:

GitHub

0
tihomirj avatar tihomirj 33 Точки

Здравей колега,
Опитай с отрицателен int примерно -52 000 и ще видиш къде е проблемът. Ти приемаш, че след като парснеш int,  ще можеш да парснеш и uint, което не е вярно. Излиза, че -52 000 ще се вмести и в uint. Не е така нали?

Недей да влагаш try-catch, a ги направи последователни.

Примерно нещо такова:

http://pastebin.com/cHWVvmju

0
indieza avatar indieza 46 Точки

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

За да нямаш проблеми специално с тази задача препоръчвам ти да прочотеш числото от конзолата и да го запишеш в тип данни BigInteger.

За целта ще ти трябва да си добавиш нова библиотека (System.Numerics). Това е моето решение.Цък

1
butanfire avatar butanfire 32 Точки

Привет!

Ето едно по-лесно решение с TryParse :

http://pastebin.com/vxb3VKbK

 

Поздрави,

Владо

0
RossenYordanov avatar RossenYordanov 2 Точки

Здравейте, ето и едно решение и от мен. Използвана е само конструкцията try...catch.

http://pastebin.com/k7vV7Lfm

0
itanev avatar itanev 1 Точки

Здравейте, ето и едно решение и от мен. Използвана е само конструкцията try...catch.

http://pastebin.com/k7vV7Lfm

 

Колега много ми помогна с твойто решение. Това решение е много хитро:

string input = Console.ReadLine();
            try
            {
                long number = long.Parse(input);

                ....

            }

 

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