|
Модераторы: Poseidon |
|
POP |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.9.2006 Репутация: нет Всего: 1 |
Есть некий алгоритм трансформации числа, напримре двухзначное число представим в виде двух цифр D1 и D2, например если число 05, то D1 = 0, D2 = 5
Прчем если одна из цифр равна нулю, то ее заменяем на 10 и далее считаем по формуле: 10* D1 + D2 , результат для 05 будет равен 10 * 10 + 5 = 105. Так вот задача, как на Delphi сделать обратное преобразование, то есть из 105 сделать 05, и вывести эти две цифры 0 и 5 на экран? Это для двухзначного, а вообще для любой значности как это сделать? Например для 3-x значного формула будет такая 100*D1 + 10*D2 + D3 , причем если в числе есть ноль, то его заменяем на 10. Для 32045 будет 10000*3 + 1000*2 + 100*10 (0 приняли за 10) + 10*4 + 5 = 33045 , а теперь нужно из 33045 получить по цифренно '3' '2' '0' '4' '5' |
|||
|
||||
Rodman |
|
|||
CIO Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 26 Всего: 122 |
К примеру у тебя цыфра вводится в эдит
Это сообщение отредактировал(а) Rodman - 4.10.2006, 17:14 |
|||
|
||||
POP |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.9.2006 Репутация: нет Всего: 1 |
Ты похоже ничего не понял, во первых не String, а Integer, вот вторых возьмем число 90 , после преобразования получается 9*10 + 10 = 100 , переведи его при помощи твоей фунции в 90 обратно... то-то. |
||||
|
|||||
HellanD |
|
|||
Опытный Профиль Группа: Участник Сообщений: 443 Регистрация: 16.5.2006 Где: Киев Репутация: нет Всего: 2 |
Извините а обязательно в Делфи просто точно знаю как такое сделать в С
там есть операция взятия остатка от деления... |
|||
|
||||
POP |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.9.2006 Репутация: нет Всего: 1 |
В Delphi тоже есть остаток от деления, функция mod , напримре 9 mod 4 равно 1 , то есть остаток от деления. |
|||
|
||||
Albinos_x |
|
|||
Evil Skynet Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 2 Всего: 108 |
ничего не понятно из вопроса... например:
и вот не понятно, как это сочетается с: почему на второй позиции получилось 2, а не 3 ? если смотреть цытату выше, то почему на третьей позиции вместо 10 получился нуль? если смотреть примен по последнему варианту с учётом, что по идее должно получиться: '3' '3' '0' '4' '5 (из того как я понял задачу)
это получим массив байт... если в конце нужно получить массив символов, то проще использовать Inttostr(Х)... Это сообщение отредактировал(а) Albinos_x - 4.10.2006, 19:09 -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
POP |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.9.2006 Репутация: нет Всего: 1 |
Нужно сделать обратное!! преобразование. Число трансформируется так: Например для 32045 будет 10000*3 + 1000*2 + 100*10 (0 приняли за 10) + 10*4 + 5 = 33045. То есть на входе мы видеи 33045, наша задача преобразовать его в 32045, тк нам известна формула по которой 32045 трансформируется в 33045, понимаешь? |
|||
|
||||
Albinos_x |
|
|||
Evil Skynet Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 2 Всего: 108 |
т.е. нам надо
33045->32045 f j,hfnyj ye;yj& Добавлено @ 19:30 т.е. а обратно нужно? -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
POP |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.9.2006 Репутация: нет Всего: 1 |
Да. Вот 33045 -> 32045 это и есть обратное. А прямое никаких проблем не представляет, сам подумай что сложного сделать для 32045 такое преобразование - 10000*3 + 1000*2 + 100*10 (0 приняли за 10) + 10*4 + 5 = 33045 |
|||
|
||||
Albinos_x |
|
|||
Evil Skynet Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 2 Всего: 108 |
да и туда и обратно непредставляет...:
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
POP |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.9.2006 Репутация: нет Всего: 1 |
А вот теперь берем и проверяем твою функци: Число 100 должно преобразоваться в 90, твой ф-я выдает -10 Число 110 должно преобразоваться в 00, твоя ф-я выдает 100 Число 500 должно преобразоваться в 490, твоя ф-я выдает 390 Так что не все тут так просто. |
||||
|
|||||
Albinos_x |
|
|||
Evil Skynet Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 2 Всего: 108 |
....хм.....
т.е. если идут несколько нулей подряд, то заменяется только младший разряд...? почему 00??? отнимается только 1 разряд во втором положении??? -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
POP |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.9.2006 Репутация: нет Всего: 1 |
Я же формулу писал, сам переведи и увидишь, 90 = 10*9 + 10 = 100 , обратно в 90 твоей функцией не запаковывается Добавлено @ 21:01
Я же формулу писал, сам переведи и увидишь, 90 = 10*9 + 10 = 100 , обратно в 90 твоей функцией не запаковывается |
||||
|
|||||
Albinos_x |
|
|||
Evil Skynet Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 2 Всего: 108 |
я наверно, только что догнал вопрос....
Он, наверно, В том что тебе нужен алгоритм обратного преобразования?... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
POP |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.9.2006 Репутация: нет Всего: 1 |
Да!! ) Сам подумай в чем проблема преобразовать например 3-значное число по формуле 100*D1 + 10*D2 + D3 , причем заменяя 0 если он есть в числе на 10. Проблема именно в обратном преобразовании. |
|||
|
||||
Правила форума "Центр помощи" | |
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |