Loading...
Kristian8606 avatar Kristian8606 42 Точки

Книга "Основи на програмирането" (с Java) Integer to Base

Преместих въпроса си тук защото беше в раздела  общи приказки 

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

Задача: число към бройна система  ( Integer to Base)

Някои може ли да ми обясни как се решава тази задача че зациклих 

https://java-book.softuni.bg/chapter-10-methods.html

Тагове:
0
Fundamentals Module
debono avatar debono 56 Точки

Мога да ти дам пример как става в c#. Там има метод Convert.To String(your number, base).ToUpper.

В java може би има нещо подобно. Решава се на два реда.

0
NickIvanov avatar NickIvanov 23 Точки

https://pastebin.com/XjFVjfec

Мисля, че ще е удачно да използваш този код, не работи само за определената задача, а за число към която и да е основа. 100/100 в джъдж.

Успех!

0
13/11/2017 12:00:29
Kristian8606 avatar Kristian8606 42 Точки

Благодаря за кода работи на 100 но проблема е че аз така и не разбрах самия метод на изчисление

помолих за помощ като се надявах във вашия код да видя как точно става сметката но уви тои е по кратък дори от моя 

можете ли да ми обясните какво точно прави този метод или да ме насочите към някакъв матерял за четене защото в условието на конкретната задача има подсказка в която е обяснено  

  • Изчисляваме остатъка от числото, разделено на основата.
  • Вмъкваме остатъка от числото в началото на низа, представящ резултата.
  • Разделяме числото на основата.
  • Повтаряме алгоритъма, докато входното число не стане 0.

просто искам да разбера как се изчислява число към основа 

предварително благодаря.

0
SZahariev avatar SZahariev 4 Точки

Здравейте, опитвам се да разбера защо StringBuilder-а ми залепва числата от дясно на ляво и как да го променя? И дали е възможно изобщо. Резултатът от 9 и 7 не ми връща 12, а 21.

Линк към кода:

https://pastebin.com/RBReaCR3

0
simona_st avatar simona_st 38 Точки

И аз бих искала да съживя темата. Моят въпрос е кога се учат бройни системи и преминаване между тях? В курса Programming Fundamentals (Tech Module) или C#/ Java Fundamentals (Professional Modules) ?

0
KeepCoding avatar KeepCoding 554 Точки

Ще цитирам коментар на човек, писал по подобна тема

Ту партс, дет се вика, поне това ми идва на прима виста - ако имаш нужда от огромен перформънс. Дето се вика да направиш елементарна аритметика побитово вместо с оператор за събиране/изваждане е хиляди пъти по-бързо.

Другото е когато става въпрос за системно програмиране, където побитовите репрезентации отговарят на някакъв стейт на машината. Какъвто де факто е най-елементарният пример, че нулев бит означава загасена крушка, а пък единица - светната такава. Което де факто защо го правиш с побитови операции, а не с някаква обектна абстракция отгоре - пак заради перформънс и ограниченията на съответното устройство.

TL;DR нямат приложение в ежедневното програмиране на средностатистическия програмист.

Т.е. силно ме съмнява, че в Tech Module ще преподават тази тема. Може да я споменат колкото за обща култура, но по-скоро ще се наблегне над основни концепции, типове данни и коректна работа с тях и като цяло общи неща. На по-късен етап (може би) ще се наблегне върху силна оптимизация на кода и неговия перформънс. Така мисля аз де. Би било хубаво някой от екипа на Софтуни да отговори или някой, който е минал горните курсове.

0
sevgin0954 avatar sevgin0954 557 Точки

Няма нищо специално в броините системи и мисля че няма лекция за тях най много да има някоя задача в упражненията за тях.Мисля че в 10 клас се учеха.  http://www.introprogramming.info/intro-csharp-book/read-online/glava8-broini-sistemi/

0
28/12/2017 12:59:18
simona_st avatar simona_st 38 Точки

Благодаря за отговорите! Има хора, които не са учили бройни системи в 10 клас (или когато и да било). Може и никога да не потрябват на практика, но изглежда интересно.

0
Savas avatar Savas 38 Точки

По отношение на превъплащенията на броинте системи:
За по-лесно – ето един пример как се превръща десетично число 140 в осем(т)ична броина с-ма :)

Стъпка1
Целочислено деление 140/8 = 17 (+ 4 остатък) -- > 4

Стъпка 2
Целочислено деление 17/8 = 2 (+ 1 остатък) --> 1

Стъпка 3
Целочислено деление 2/8 = 0. Щом получим 0, значи сме до тук. Цифрата която излиза от тази последна операция е --> 2

Така, че отговора е 214.
Да... за жалост поредността на "добиване" на цифрите е наобратно - което изисква в кода да се пренаредят обратно.

(Логиката е същата и за други првръщания ... за до 10-тични системи. За нагоре е същото, но малко по-трудно за храносмилане защото започват да се намесват и букви за символи и числа с по две цифри... но логита е същата.)

---

По отношение на кода... немога да изкарам 100 точки на тази задача (дава ми 88) – реже ме на първия тест ... явно има някакво гранично условие, което изпускам.

Кода ми е тук: https://pastebin.com/qzQGeuWv
// има доста описание по кода за по-голяма яснота

Знам, че темата е за java , а моя код е за C#, но от една страна ще помогне на тези, които не се ориентират в задачата, от друга страна с радост ще приема идея къде бъркам.

ЗАБ: предвид на basic нивото на което е дадена задачата (в Programing Basic Book) приемам, че решението и следа да е с basic средства.

0
Somma avatar Somma 6 Точки

На бързо ще коментирам, въпреки, че темата е стара, като провокирам и размисъл и логика за колегите, които биха чели темата за в бъдеще!

Нека да поразсъждаваме, за да забележите, че има грешка (голяма и скрита) в условието! Грешката е в „Насоки и подсказки“, която заблуждава!

- Изчисляваме остатъка от числото, разделено на основата.

Което значи следното: разделяме изчисления остатък от числото на основата ->

a = (number % 10) / toBase; първо намираме остатъка и го делим на базата, НО!!!

Това не е решението и не се иска това! Ето какво се случва, мисля ще се съгласите, само ако преместим запетайката в изречението:

- Изчисляваме остатъка,  от числото разделено на основата.

Което пък значи следното: числото го разделяме на основата -> a = number  / toBase; така имаме остатъка, който ще запазваме, НО също не се има предвид това в нашия случай! Има остатък, но НЕ поучаваме самия остатък!

Затова изречението е логическа грешка и трябва да се чете по следния начин:

- Изчисляваме остатъка,  чрез модулно деление на числото с основата. ->  a = number % toBase;

Това се има предвид така че Джъджа да върне 100/100 като резултат.

В предходния коментар Savas е обяснил математически как се превръща число от десетична в осмична бройна система, което потвърждава моето твърдение, че изречението в "Насоки и подсказки" е неадекватно (подвеждащо, двусмислено).

Остава да се справите със стринга във връщана стойност от извикваната функция. При вход за число 9 и база 7-ца обикновената логика string += to_string(остатъка), то резултатът ще ви е 21, но ако направите разместване string = to_string(остатъка) + string;, то получавате верния резултат - 12.

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