Страница: 1 |
Страница: 1 |
Вопрос: Очень интересная задача по VBA! Есть мысли?
Добавлено: 13.05.06 21:00
Автор вопроса: AlonZo
Добрый денЬ!
У меня имеется очень интересная задача. Я над ней голову ломал уже неделю. Может, кто из вас догонит, как её сделать или предложит хорошие идеи по написанию кода?
Задача такая (VBA):
В Поле1 вводится строка (можно фиксированной длины, например 12 символов)
В других полях высвечиваются все символы, которые встречаются в тексте, рассчитываются их количества в тексте и их вероятность.
Затем эти слова зашифровываются с помощью нулей и единиц (тут как раз самое интересное)
После шифрования соответствующая бинарная последовательность выводится в Поле2. А после щелчка на кнопку должна происходить расшифровка в обратную сторону в Поле3. И ещё добавочка: надо, чтобы при изменении бинарной строки, в Поле3 должна выписываться именно то, что должно получиться (в общем, лабуда какая-то, а не то, что было в Поле1 изначально)
Например:
ПОЛЕ1 :Маша – каша.
М 1/12 1101
А 4/12 0
Ш 2/12 101
Пробел 2/12 100
- 1/12 1100
К 1/12 1111
. 1/12 1110
ПОЛЕ2: 11010101010011001001111010101110
ПОЛЕ3: Маша – каша.
При изменении Поля2: 11110101010111001001111010101110
Поле3: Кашаывлв (например)
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 13.05.06 21:16
Ничего интересного не вижу в этой задаче.
Номер ответа: 2
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #2
Добавлено: 14.05.06 01:35
HOOLIGAN,эт просто ему задачку задали в школе, вот он и разводит всех, чтоб за него написали..
Ну о-о-о-чень интересная задачка! ))
Номер ответа: 3
Автор ответа:
AlonZo
Вопросов: 1
Ответов: 2
Профиль | | #3
Добавлено: 14.05.06 12:00
Блин, пацаны, мне и не надо, чтобы вы её решали, я прошу всего лишь ценных идей по еёё решению. Но уже если вы такие жлобы, то и Бог с вами. На свете ещё много хороших людей! А от вас, как от "жителей" форума, я такого наезда не ожидал! Norespect!
Номер ответа: 4
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #4
Добавлено: 14.05.06 17:30
Вижу здесь только одного жлоба, некоего AlonZo, который не удосужившись прочесть правила форума, создает топик с бессмысленным названием.
Давай своим темам нормальные названия, например: "Шифрование строки".
Номер ответа: 5
Автор ответа:
AlonZo
Вопросов: 1
Ответов: 2
Профиль | | #5
Добавлено: 14.05.06 19:23
Да я уже понял, что как тему не назови от Вас можно услышать только пафосный возглас о том, что Вы стало быть круче всех, а я - ламер. Я этого и не скрываю, поэтому и прошу помощи (кстати, для меня эта задача действительно интересна). А уж если я отрываю Вас - великого программиста VBA от создания программы планетарногго масштаба, то уж простите. Пойду почитаю книги для ламеров и не буду лезть к профи. Adios loshuiliganos!
Номер ответа: 6
Автор ответа:
ofile
ICQ: 11750095
Вопросов: 5
Ответов: 15
Профиль | | #6
Добавлено: 14.05.06 20:53
ни на кого обиду не держи, они не со зла
значит так:
берешь значение ячейки, сначала переводишь в коды символов (у каждого символа есть код, который отражается цифрой десятичной системы исчисления), при этом между кодами можно наставить каких-нить символов для обозначения границ цифр каждой буквы (например, граница - " ", настоящий пробел " " )потом переводишь этот код в в двоичный, расшифровка тем же макаром, что еще интересует?
Номер ответа: 7
Автор ответа:
Chan
ICQ: 26977559
Вопросов: 3
Ответов: 14
Web-сайт:
Профиль | | #7
Добавлено: 29.05.06 11:48
Задавай конкретные вопросы, что не получается. Вместо тебя твою задачу здесь никто делать не будет
Номер ответа: 8
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 29.05.06 15:36
ох и задачу описал... опять напиваться чтобы понять? ладно... пиво где-то было, щас открою, попробую...
значит так 2:
Как я понял, есть 3 поля...
1) Строка оригинал
2) Строка зашифрованный оригинал
3) Строка расшифрованного поля 2 (зашифр. оригинал)
Шифровать/Расшифровать текст тебе надо двоичной системой исчисления... За тебя ессно небуду, но так уж и быть функцию подкнину...
Dim CnvStr$: CnvStr$ = ""
Do
Ostatok = Deci Mod Numsys
Deci2 = Deci - Ostatok
Deci2 = Deci2 / Numsys
If Ostatok > 9 Then Osy$ = Chr$((Ostatok - 10) + 65) Else Osy$ = LTrim$(Str$(Ostatok))
CnvStr$ = Osy$ + CnvStr$
Deci = Deci2
Loop Until Deci = 0
FromDEC = CnvStr$
End Function
Function ToDEC(NumSystem, number$)
number$ = UCase$(number$)
DecNum = 0
For Convert = 1 To Len(number$)
SysNum$ = Mid$(number$, Convert, 1)
If Asc(SysNum$) > 64 Then SysNum$ = LTrim$(Str$((Asc(SysNum$) - 65) + 10))
DecNum = DecNum + Val(SysNum$)
If Convert = Len(number$) Then Exit For
DecNum = DecNum * NumSystem
Next Convert
ToDEC = DecNum
End Function
(с) ЦыРакс
глотает любые системы исчисления...
Теперь прохидишь циклом по всему тексту
For i = 1 to len(Поле1)
'и шифруешь каждый символ, шифр добавляя к полю 2
Поле2 = Поле2 & FromDEC(2,chr(mid(Поле1,i,1)))
next i
расшифровка аналогично, только используй ToDEC
p.s. покопайся в поисковике, найдёшь гораздо быстрее функцию конкретно для перевода в двоичную/с двоичной...