Russian Qt Forum

Программирование => Алгоритмы => Тема начата: CuteBunny от Ноябрь 30, 2012, 13:15



Название: Разложение числа на два слагаемых
Отправлено: CuteBunny от Ноябрь 30, 2012, 13:15
Как получить такую последовательность?

96 = 00+96
97 = 11+86
98 = 22+76
99 = 33+66
100 = 44+56
101 = 55+46
102 = 66+36
103 = 77+26
104 = 88+16
и т.д. допустим у нас на входе 105, получается 99+6

Получается, у меня первое слагаемое - это что-то вроде индекса, второе какое-то смещение, я могу конечно создать массив этих числел и искать по нему, но это не правильно мне кажется, ведь здесь явно как-то хитро кодируются числа?...


Название: Re: Разложение числа на два слагаемых
Отправлено: Serr500 от Ноябрь 30, 2012, 13:18
For y in [96, 105]
t = (y - 96) * 11, y = t + (y -t)


Название: Re: Разложение числа на два слагаемых
Отправлено: mutineer от Ноябрь 30, 2012, 13:20
y = t + (y -t)

хм... y = y ?


Название: Re: Разложение числа на два слагаемых
Отправлено: kambala от Ноябрь 30, 2012, 13:29
это чтобы показать, что формула справедлива. т.е. одно слагаемое равно t, а второе — y-t.


Название: Re: Разложение числа на два слагаемых
Отправлено: CuteBunny от Ноябрь 30, 2012, 13:35
For y in [96, 105]
t = (y - 96) * 11, y = t + (y -t)

Ок, спс!!! Это то, что нужно!

Не знаю правильно ли я все делаю, но это мне нужно для работы со сканером штрих-кодов symbol ls2208!
Я через WH_KEYBOARD_LL перехватываю коды сканера, так вот он всегда мне отсылает нажатие системных клавиш в виде:
к примеру
[164][96][101][100] (в десятичном виде) получается это символ из ascii - 6 (0x36), теперь понятно как раскодировать:

164 - это не понятно, что
96 - это число участвует в формуле
101 - его надо разложить по формуле и получим два слагаемых: 55, 46
100 - вычитаем из этого числа второе слагаемое из предыдущего п. получаем 54 (0x36) - т.е. символ ascii 6!

Спасибо!:)