|
DEC -> HEX. Как? | ☑ | ||
---|---|---|---|---|
0
Гефест
19.12.08
✎
06:54
|
Нужно в 7.7 преобразовать число в шестнадцатеричную систему. Как ловчее?
|
|||
1
ASV
19.12.08
✎
06:56
|
||||
2
Андрюха
19.12.08
✎
06:58
|
Функция ПреобразоватьВ16(Цифра) |
|||
3
Гефест
19.12.08
✎
07:06
|
Спасибо, сейчас попробую
|
|||
4
чупа
19.12.08
✎
07:07
|
емае, и этот человек щитает себя программистом :(
|
|||
5
Гефест
19.12.08
✎
07:21
|
(4) Не просто программистом, а настоящим программистом, который ни в жисть не будет писать то, что уже написано :)
|
|||
6
smaharbA
19.12.08
✎
07:31
|
(2) цифры 10 не бывает )
|
|||
7
skunk
19.12.08
✎
07:33
|
(5)то есть ничего
|
|||
8
YellowRabbit
19.12.08
✎
07:45
|
(2) Мощно! Тут и рекурсия, и глобальные переменные,и индийский код. Я-то, наивный, думал, что одной функцией можно обойтись:)
|
|||
9
smaharbA
19.12.08
✎
07:49
|
(8) обходись
|
|||
10
Андрюха
19.12.08
✎
07:56
|
||||
11
YellowRabbit
19.12.08
✎
08:02
|
(8) легко
Функция То16(чсл) Если 0 = чсл Тогда Возврат "0"; КонецЕсли; результат = ""; Пока 0 < чсл Цикл остаток = чсл % 16; Если 10 <= остаток Тогда результат = Симв(КодСимв("A") + остаток - 10) + результат; Иначе результат = строка(остаток) + результат; КонецЕсли; чсл = цел(чсл / 16); КонецЦикла; Возврат результат; КонецФункции |
|||
12
skunk
19.12.08
✎
08:11
|
(8)сделай ... без рекурсии ...
зы: варианты типа этого:
не предлагать |
|||
13
YellowRabbit
19.12.08
✎
08:12
|
(10) Я рад, что это не твоё творение :)
|
|||
14
skunk
19.12.08
✎
08:13
|
а чем цикл отличается в данном случает от рекурсии
|
|||
15
Ygich
19.12.08
✎
08:24
|
(14) цикл от отличается от рекурсии тем что он лучше. у рекурсии вложенность ограничена.
|
|||
16
ЗлобнийМальчик
19.12.08
✎
08:25
|
(14) а чем вообще цикл отличается от рекурсии???
|
|||
17
skunk
19.12.08
✎
08:39
|
(15)и какой же максимальный уровень вложенности рекурсии для 1С
|
|||
18
skunk
19.12.08
✎
08:43
|
(16)рекурсии стек использует ... это считается одним из самых существенных отличий
|
|||
19
Ygich
19.12.08
✎
08:46
|
(18) ну вот как раз размер стека ограничивает вложенность рекурсии
|
|||
20
Woldemar177
19.12.08
✎
08:58
|
А можно внешнюю компоненту написать на С / С++ ?
|
|||
21
DUDE
19.12.08
✎
08:59
|
Мне почему-то кажется, что этот код (DEC -> HEX. Как? и (DEC -> HEX. Как? не будет совсем работать с дробной частью. А в задании не было задано целое оно или действительное.
|
|||
22
DUDE
19.12.08
✎
09:00
|
Извините, за корявость оформления ссылок на сообщения :(
|
|||
23
H A D G E H O G s
19.12.08
✎
09:05
|
Вот ни разу не писал преобразований из одной системы счисления в другую.. Глупости это. Все написано до нас..
|
|||
24
skunk
19.12.08
✎
09:06
|
(19)боюсь в таком случае, для оного это не существенно
|
|||
25
DUDE
19.12.08
✎
09:10
|
В догонку. Не зря ведь проходили, что такой "прямой" перевод можно делать лишь из двоичной СС, так что только 10ное число -> 2чное -> 16чное будет правильным. То есть, может некоторые числа и получится так "перевести", но это исключение. А вообще надо почитать мат.часть.
|
|||
26
Woldemar177
19.12.08
✎
09:16
|
Гефест объясни зачем это надо? Просто интересно...
|
|||
27
Ygich
19.12.08
✎
09:17
|
(24) а ты часом не индиец, раз тебе переполнение стека несущественно?
|
|||
28
skunk
19.12.08
✎
09:25
|
(27)тогда не индиец скажи ответ на вопрос заданный вам в 17 ... только в конкретных цифрах... а не так вы отмазались в (19)
|
|||
29
Гефест
19.12.08
✎
09:27
|
(26) Есть список номеров пропусков в десятеричном виде. Для новой системы нужны шестнадцатеричные номера
|
|||
30
Deon
19.12.08
✎
09:27
|
Проход цикла это один джамп в начало цикла, а рекурсивная функция - это 2 джампа - вход в неё и выход обратно.
|
|||
31
NikVars
19.12.08
✎
09:33
|
(15), (19) Вот это да... Вложенность циклов тоже ограничена, если ты не знаешь.
Как упражение, можешь попробовать использовать циклы с неограниченной вложенностью. А цикл лучше рекурсии тем, что потребляет меньше ресурсов в частность оперативной памяти (рекурсия жрет много памяти, которая занимается под стек, который растет при каждом рекурсивном вызове и свертывается в самом конце). А лучше-хуже смотреть нужно именно на конкретной задаче, используется это как подзадача в другой задаче и сколько времени выделено на ее выполнение или на разработку. Все относительно. Разговоры на тему вообще к конкретным выводам не приведут. |
|||
32
Ygich
19.12.08
✎
09:42
|
(28) точных цифр не знаю. если интересно - советую обратиться к специализированной литературе. а вообще (31)
|
|||
33
Woldemar177
19.12.08
✎
09:43
|
(29) кто такую муть предложил в ТЗ ?
Не проще было бы формировать типа АБС-123 из двух строк. |
|||
34
skunk
19.12.08
✎
09:52
|
(32) в (31) я не увидал чего-то, что противоречило бы сказанному мною ... и уж тем более относить меня к племени индийцев... вот судя по всему в данном вопросе вы индийц...
подумайте... хватит ли 5000 ротаций для решения данной задачи ... выдержит ли 1С 5000 вложений рекрусии |
|||
35
NikVars
19.12.08
✎
09:52
|
(29) Предлагаю вообще не париться со старыми номерами. Просто считайте их шстандцатиричными, а новые выдавайте по новым правилам. А чтобы вообще запутаться переходите на запись номеров пропусков в римской системе счисления, как нумерация серий в мексиканском сериале.
|
|||
36
чупа
19.12.08
✎
09:57
|
(25)
>> В догонку. Не зря ведь проходили, что такой "прямой" перевод можно делать >> лишь из двоичной СС, так что только 10ное число -> 2чное -> 16чное будет >> правильным. То есть, может некоторые числа и получится так "перевести", но >> это исключение. А вообще надо почитать мат.часть. такой бред можно только в среде 1Цэшнигов услышать. еще один "программист" |
|||
37
чупа
19.12.08
✎
09:57
|
именно поэтому программист и "программист 1С" совершенно разные понятия
|
|||
38
Ygich
19.12.08
✎
10:08
|
(34) в конкретном данному случае так как число в функцию передается числом по моему максимальный уровень вложенности тут будет 32. но часто параметры передаются в функции преобразования систем счисления в виде строки. попав на очень длинную строку программа вылетит. а если вычисления на сервере то завалится сервер.
|
|||
39
Ygich
19.12.08
✎
10:12
|
(36) да ладно тебе. эт одинеска на самом деле корявая неправильно считает при преобразовании. и руки тут совсем не причем.
|
|||
40
DUDE
19.12.08
✎
10:28
|
2 Чупа:
Обоснуйте, пожалуйста, слово "бред"? Что "бред"? То, что в школе и универе мы не переводили делением из 10ной в 16ную (а предлагаемый код - тупо деление на 16 с отображением результата в цифры 16 СС), и прямо говорилось, что так делать не верно? + Не будучи полностью уверенным в памяти написал "А вообще надо почитать мат.часть.". А вот "такой бред можно только в среде 1Цэшнигов услышать. еще один "программист" и "именно поэтому программист и "программист 1С" совершенно разные понятия" точно бред. Относительно меня - тем более, что вы не имеете понятия, о том, что я реализовывал и с чем работал кроме области 1С. |
|||
41
Torquader
19.12.08
✎
12:05
|
Функция ЦифраВСимвол(Val С)
return Mid("0123456789ABCDEF",C+1,1); КонецФункции Функция ЧислоВСтрокуШест(Val Ч) if ValueTypeStr(Ч)<>"Число" then return "!";endif; if Int(Ч)<>Ч then Ч=Int(Ч);endif;// дробную часть отбрасываем if Ч=0 then return "0";endif; if Ч<0 then Ч=-Ч;Зн=1;else Зн=0;endif;// для отрицательного выводим знак Стр=""; while Ч>0 do Стр=ЦифраВСимвол(Ч % 16)+Стр; Ч=Int(Ч/16); enddo; if Зн=1 then Стр="-"+Стр;endif; return Стр; КонецФункции Что касается дробной части, то надо понимать, что в 1С дробная часть используется частично (во всех элементах хранения данных мы задаём смещение для точки) - поэтому, проще всего рассматривать все числа как целые, но не забывать про смещение точки. |
|||
42
orefkov
19.12.08
✎
16:17
|
(40)
Ну вот, поучись у тупых адинэсников тому, что вам в универе не показали :) И там не "тупо деление на 16", смотри внимательнее. |
|||
43
DUDE
21.12.08
✎
20:09
|
2 Orefkov:
Высказывание о "тупых адинэсниках" идет из 36го сообщения, а отнюдь не из моего. Смотри внимательнее. ;) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |