Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

ivan.nedyalkov avatar ivan.nedyalkov 10 Точки

[Programming Fundamentals] - 21. Numbers In Reversed Order

Здравейте,

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

https://github.com/ivannedyalkov/Data-Types-and-Methods---Exercises/blob/master/21.%20Numbers%20In%20Reversed%20Order/21.%20Numbers%20In%20Reversed%20Order.cs

Поздрави 

Тагове:
1
Programming Fundamentals 27/05/2016 10:11:38
SashoVasilev avatar SashoVasilev 51 Точки
Best Answer

Най-добре е ако числото се разглежда като string. Първо ако е целочислено числото действително можеш да вкараш един цикъл while(number>0) и всеки път да делиш на цяло число 10, но можеш да получиш като вход и дробно число.При него вече няма гаранция колко цифри ше са след десетичната запетая и най-рационалното нещо, което може да се направи е да разглеждаш числото като текст.Eдин number.Reverse() (ако number е string) те оправя идеално smiley

0
Stanislav.Petrov avatar Stanislav.Petrov 12 Точки

Аз също бих искал да споделя едно решение подредством string:

https://pastebin.com/MEm7ZgqC

Решението работи на 100/100.

До колкото се запознах с предлаганите реяения, виждам, че в много от тях колегите не разглеждат случаи , когато подаденото число е отрицателно и съответно знака '-' трябва да се постави най-отпред при reverse-ването на числото, а не да остане в края на string-a.

 

 

0
indieza avatar indieza 46 Точки

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

Специално тази задача може да се реши със стринг и едни for цикъл. Числото което искаш да въведеш го запазваш в стринг и пускаш един обратен for цикъл. Това е моето решение: цък laugh

1
27/05/2016 10:15:11
ivan.nedyalkov avatar ivan.nedyalkov 10 Точки

Супер ! 

Предложение как да решим без масиви още не сме ги учили ?

Благодаря  

0
indieza avatar indieza 46 Точки

Бих ти препоръчал ето тази статийка. Тук нещата са без масиви, а са само прости математически сметки.smileyНо не съм много сигурен че тези сметки могат да се приложат за десетичните дроби.

0
27/05/2016 10:14:57
LittleZombie avatar LittleZombie 30 Точки

Решението наистина е толкова кратко, но по условие се иска задачата да бъде решена с метод. code

0
27/05/2016 10:14:46
massbless avatar massbless 5 Точки

Привет,

Аз също изпитах доста големи затруднения с тази задача!

Тук да отворя една скоба - ясно ми е, че ако числото се разглежда като string и се използва масив, задачата може да се реши на 5 реда. Според мен обаче съвсем преднамерено са я дали преди темата за arrays и идеята е да си напънем мозъците за решение, което използва само знанията ни към момента :)

Условието казва да се напише метод, който принтира decimal number на обратно, но аз така и не успях да измисля как това може да стане директно. Вместо това разделям числото на "лява" (цяла) и "дясна" (десетична) част и за всяка от тях прилагам метод, който принтира integer number на обратно.

Това обаче доста усложнява решението, защото "дясната" част трябва да се докара до цяло число (примерно от 313.004319 трябва да се достигне до числото 4319), а отделно трябва да се въведе и брояч за евентуални нули между десетичната запетая и "дясното" число. Като се добавят и проверки за цели / отрицателни числа, крайното решение (поне според мен) изглежда прекалено дълго и тромаво за задача с едноредово условие.

Затова ми е много любопитно дали по-съобразителни от мен колеги са измислили някакво по-елегантно решение, при което методът работи директно с decimal числа. Отново да повторя - решения, използващи array, не ме интересуват!

Благодаря предварително :)

0
27/05/2016 05:36:47
butanfire avatar butanfire 32 Точки

Ето :

string input = Console.ReadLine();
            
Console.WriteLine(string.Join("",input.Reverse()));

 

Реално .Reverse() ти връща IEnumerable колекция.

 

Поздрави,

Владо

0
KrasimirPetkov avatar KrasimirPetkov 328 Точки

Може да се отпечата и с

Console.WriteLine(new string(input.Reverse().ToArray()));

 

0
massbless avatar massbless 5 Точки

Ъъъ, с риск да прозвуча грубо, "Отново да повторя - решения, използващи array, не ме интересуват!".

И reverse, и Join не разглеждат въведената данна като число, а ползват знания, добити в темата за arrays.

От друга страна, напълно възможно е задачата да е била дадена на предходната тема, защото е станало объркване (нали бе сменен учебният план - може би колегите от предния випуск вече са били минали arrays на този етап?). Съответно от нас да се е е очаквало да ползваме arrays и аз само да съм си блъскал главата напразно :)

0
02/06/2016 12:51:16
sashkooooy avatar sashkooooy 26 Точки

Здравей и от мен... 

доста помислих над тази задача, тъй като исках да я направя с Integer а не със string, накрая стигнах до това решение: https://github.com/sashkooooy/MyRepo/blob/master/3.ProgrammingFundamentals/2.DataTypesIMethodsIArraysILists/4.21-NumbersInReversedOrder/Program.cs ... но не мога да разбера, защо ми дава само 50 точки в Judge.. Не съм пробвал със string и е много възможно точно заради това да не ми дава всички 100 точки.

Надявам се, да съм помогнал до някъде. :)

0
SvilenPavlov avatar SvilenPavlov 11 Точки

Здравейте, кодинг джедаи! Моля, някой да постне решение без масиви, щото пейст биновете на другите от миналата година вече не са активни! Тенкс ин адванс, мей дъ форс би уитю.

0
Tsekotsolov avatar Tsekotsolov 12 Точки

https://pastebin.com/Lqsv9SdY

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