Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как одном числе хранить сумму трех чисел, с обратной возможность декодирования 
:(
    Опции темы
Akina
Дата 18.3.2008, 21:40 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Delphist @  18.3.2008,  21:18 Найти цитируемый пост)
Не понял 

Да это тебя пока никто не понял. Ты до сих пор не сформулировал задачу ПОЛНОСТЬЮ. Со всеми условиями, в ти.ч. граничными. А мы, как дураки, гадаем на кофейной гуще, что же у тебя там собсно происходит и с чем именно. Я, например, до сих пор не знаю, какими могут быть эти а-бэ-цэ - только положительными или еще и нулевыми и даже отрицательными, простой они точности или двойной, или точность задана...
Неужели трудно точно поставить задачу?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Delphist
Дата 19.3.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Цитата(Akina @  18.3.2008,  22:40 Найти цитируемый пост)
Неужели трудно точно поставить задачу? 

числа a, b, c могут быть дробными, функции EnCode превращает их в одно число d (целое или дробное), а функция DeCode превращает из числа d их обратно в три числа a, b, c

Вот собственно и все


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
mes
Дата 19.3.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: нет
Всего: 250



Цитата(Delphist @  19.3.2008,  15:19 Найти цитируемый пост)
числа a, b, c могут быть

лучше тогда вопрос: а какими они не могут быть? 

так как вышеописанное условие не соответствует фразе
Цитата(Akina @  18.3.2008,  21:40 Найти цитируемый пост)
 Со всеми условиями, в ти.ч. граничными



Это сообщение отредактировал(а) mes - 19.3.2008, 15:48


--------------------
PM MAIL WWW   Вверх
Akina
Дата 19.3.2008, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Delphist @  19.3.2008,  16:19 Найти цитируемый пост)
числа a, b, c могут быть дробными

Извини за грубость, но термин "дробные" надо было забыть еще в детском саду. Real? Double? или какие там у вас в Дельфах есть типы... ограничения на значения есть? какие именно?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
4d5a
Дата 20.3.2008, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 10.6.2007

Репутация: 1
Всего: 1



Думаю из всего вышесказанного можно наконец то выпарить точную формулировку задачи:

Даны три рациональных числа (a,b,c), представленных в виде десятичной дроби. 
Каждое число принадлежит промежутку [0;100]. Максимальное количество знаков(десятичных) после запятой равно X0. Для ввода и вывода чисел используется тип double: 8 byte.
Найти функцию FY(Y1,Y2,Y3)->{Y0}, и обратную ей функцию FZ(Z0)->{Z1,Z2,Z3} которые удовлетворяют условию
FY(FZ(V))=V 
(запись "->{Z1,Z2,Z3}" означает что функция возвращает три значения)
Причем, ф-ия FY ставит в соответсвие одной тройке аргументов Y1,Y2,Y3 одно значение Y0,
а ф-ия FZ сопоставляет одному значению Z0 одну уникальную комбинацию Z1,Z2,Z3. Т.е. имеет место однозначное соответствие.
Реализовать FY,FZ двумя процедурами на унивесальном ЯП или в словестном виде.

К примеру, X0=2

Замечание: изначально предпологается что в 8 байтах хватит места для a,b,c. За это предположение отвечает условие X0=2

Delphist, поправте если не так




Это сообщение отредактировал(а) 4d5a - 20.3.2008, 21:08
PM MAIL   Вверх
4d5a
Дата 20.3.2008, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 10.6.2007

Репутация: 1
Всего: 1



но если я правильно понял задачу, Вам уже дали общий метод ее решения (см. далее). В чем вопрос - то еще ????????

Цитата(Akina @  17.3.2008,  21:12 Найти цитируемый пост)
 необходимо определить, какие данные являются избыточными, выбросить их, а из оставшихся составить выражение с однозначным соответствием



Цитата(ama_kid @  18.3.2008,  11:01 Найти цитируемый пост)
N=10000*a+b = 10000*2129+4135=21294135Восстанавливаем числа:a = N\10000 = 2129 (затем превращаем в дробное делением на 100) = 21.29b = N%10000 = 4135 =>41.35c = 100.00 - a - b => 37.36



Это сообщение отредактировал(а) 4d5a - 20.3.2008, 21:27
PM MAIL   Вверх
Delphist
Дата 21.3.2008, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Цитата(4d5a @  20.3.2008,  21:52 Найти цитируемый пост)
амечание: изначально предпологается что в 8 байтах хватит места для a,b,c. За это предположение отвечает условие X0=2

Все правильно, но X0 может меняться от 1 до 5


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Akina
Дата 21.3.2008, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Delphist @  21.3.2008,  10:51 Найти цитируемый пост)
X0 может меняться от 1 до 5 

Значит X0 = 5. Итого требуется хранение числа, состоящего из максимум 7 цифр. Следовательно:

(long*64) Hash = 2**32 * (long*32) (a * 10**5) + (long*32) (b * 10**5)


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0968 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.