Где можно почитать про архивацию

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Sasha_karasov
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 436
Зарегистрирован: 03.03.2005 (Чт) 19:38
Откуда: ua.dp

Где можно почитать про архивацию

Сообщение Sasha_karasov » 03.05.2006 (Ср) 13:45

Привет всем!
Где можно почитать про архивацию чтоб доступно и с примером!
Просто алгоритмы знаю а как их хорошо «объяснить» VB.Net толком не знаю.
У меня статьи, исходники есть но помним сложно разобраться.
Удачи!
С уважением, Алексадр.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 03.05.2006 (Ср) 14:43

вот из архивация?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.05.2006 (Ср) 15:14

Хотел человека послать читать статьи про архивацию, а он оказывается все это уже знает. :D Тогда в чем сложность то, алгоритмы есть,остается самое элементарное - переложить их в инструкции языка.

Стоит начать кодить и задавать вопросы по мере поступления. Более чем есть уже не прочитаешь
Весь мир матрица, а мы в нем потоки байтов!

Sasha_karasov
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 436
Зарегистрирован: 03.03.2005 (Чт) 19:38
Откуда: ua.dp

Сообщение Sasha_karasov » 03.05.2006 (Ср) 23:01

Дело в том что у меня много вопросов могут возникнуть в ходе а так можно убить всех зайцев за раз.

Мы имеем файл длинной в 100 байт и имеющий 6 различных символов в себе. Мы подсчитали вхождение каждого из символов в файл и получили следующее :
|-----------------|-----|-----|-----|-----|-----|-----|
| cимвол | A | B | C | D | E | F |
|-----------------|-----|-----|-----|-----|-----|-----|
| число вхождений | 10 | 20 | 30 | 5 | 25 | 10 |
|-----------------|-----|-----|-----|-----|-----|-----|

Теперь мы берем эти числа и будем называть их частотой вхождения для каждого символа. Разместим таблицу как ниже.
|-----------------|-----|-----|-----|-----|-----|-----|
| cимвол | C | E | B | F | A | D |
|-----------------|-----|-----|-----|-----|-----|-----|
| число вхождений | 30 | 25 | 20 | 10 | 10 | 5 |
|-----------------|-----|-----|-----|-----|-----|-----|
Мы возьмем из последней таблицы символы с наименьшей частотой. В нашем случае это D (5) и какой либо символ из F или A (10), можно взять любой из них например A.
Сформируем из "узлов" D и A новый "узел", частота вхождения для которого будет равна сумме частот D и A :
Частота 30 10 5 10 20 25
Символа C A D F B E
| |
|--|--|
||-|
|15| = 5 + 10
|--|
Номер в рамке - сумма частот символов D и A. Теперь мы снова ищем два символа с самыми низкими частотами вхождения. Исключая из просмотра D и A и рассматривая вместо них новый "узел" с суммарной частотой вхождения. Самая низкая частота теперь у F и нового "узла". Снова сделаем операцию слияния узлов :
Частота 30 10 5 10 20 25
Символа C A D F B E
| | |
| | |
| |--|| |
|-|15|| |
||-| |
| |
| |--| |
|----|25|-| = 10 + 15
|--|


Как создавать эти узлы?
Где их вообще хранят и как?
Удачи!
С уважением, Алексадр.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 04.05.2006 (Чт) 9:14

а поделись более полным текстом, может больше мыслей появится
Весь мир матрица, а мы в нем потоки байтов!

Sasha_karasov
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 436
Зарегистрирован: 03.03.2005 (Чт) 19:38
Откуда: ua.dp

Сообщение Sasha_karasov » 04.05.2006 (Чт) 16:12

Удачи!
С уважением, Алексадр.

Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Сообщение Роман-вб » 04.05.2006 (Чт) 18:33

Sasha_karasov
А тебя разве этому не учили? :roll: Вот я прохожу это сейчас. Правда с исп. паскаля.
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!

Sasha_karasov
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 436
Зарегистрирован: 03.03.2005 (Чт) 19:38
Откуда: ua.dp

Сообщение Sasha_karasov » 04.05.2006 (Чт) 23:12

Слушай не флуди! Какая разница на чем?
А если знаешь помоги!
Так кто знает как работать с деревьями?
Удачи!
С уважением, Алексадр.

Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Сообщение Роман-вб » 04.05.2006 (Чт) 23:37

Sasha_karasov
Слушай не флуди!
Уж кто бы говорил :lol:
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!

Sasha_karasov
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 436
Зарегистрирован: 03.03.2005 (Чт) 19:38
Откуда: ua.dp

Сообщение Sasha_karasov » 05.05.2006 (Пт) 1:05

Роман-вб писал(а):Sasha_karasov
Слушай не флуди!
Уж кто бы говорил :lol:

За всю жизнь на форуме я пару раз может только создавал посты не по теме! Да я не спорю я иного создаю тупые вопросы но не флужу
Удачи!
С уважением, Алексадр.

Sasha_karasov
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 436
Зарегистрирован: 03.03.2005 (Чт) 19:38
Откуда: ua.dp

Сообщение Sasha_karasov » 06.05.2006 (Сб) 0:14

Так что не кто не знает?
Удачи!
С уважением, Алексадр.

Sasha_karasov
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 436
Зарегистрирован: 03.03.2005 (Чт) 19:38
Откуда: ua.dp

Сообщение Sasha_karasov » 08.05.2006 (Пн) 18:30

Код: Выделить всё
Private Sub Form_Load()
Dim A As String
A = "Hello"
Dim coutChar As Integer
Dim ch(255) As Boolean
Dim tChar() As String
Dim tpChar() As Long
Dim bChar() As Boolean
Dim nChar() As Integer
Dim ASum As Long

'------------------------------
'Êàêèå ñèìâîëû âõîäÿò â ñòðîêó
'------------------------------
For j = 1 To Len(A)
    For i = 0 To 255
        If Chr(i) = Mid(A, j, 1) Then ch(i) = True
    Next i
Next j
'-----------------------------
'Ñîçäàíèå òàáëèöû
'-----------------------------
For i = 0 To 255
    If ch(i) = True Then coutChar = coutChar + 1
Next i
ReDim tChar(coutChar - 1) As String
ReDim tpChar(coutChar - 1) As Long
ReDim bChar(coutChar - 1) As Boolean
ReDim nChar(coutChar - 1) As Integer
Dim cout As Integer
For i = 0 To 255
    If ch(i) = True Then
        tChar(cout) = Chr(i)
        cout = cout + 1
    End If
Next i
For j = 0 To coutChar - 1
    For i = 1 To Len(A)
        If tChar(j) = Mid(A, i, 1) Then tpChar(j) = tpChar(j) + 1
    Next i
Next j

'-----------------------------
'Ñîçäàíèå äåðåâà
'-----------------------------
For i = 0 To coutChar - 1
    ASum = ASum + tpChar(i)
Next i
'Ïîèñê 2 < çíà÷åíèé
Dim CoutNode As Integer
CoutNode = coutChar
Do
DoEvents
Dim sumNode As Integer
Dim t, t1 As Integer
For i = CoutNode - 1 To 0 Step -1
    If bChar(i) = False Then t = i: GoTo 1
Next i
1 For i = CoutNode - 1 To 0 Step -1
    If bChar(i) = False Then If tpChar(i) <= tpChar(t) Then t = i
Next i
bChar(t) = True
For i = CoutNode - 1 To 0 Step -1
    If bChar(i) = False Then t1 = i: GoTo 2
Next i
2 For i = CoutNode - 1 To 0 Step -1
    If bChar(i) = False Then If tpChar(i) <= tpChar(t) Then t1 = i
Next i
bChar(t1) = True
'------------------------
CoutNode = CoutNode + 1
ReDim Preserve tpChar(CoutNode - 1)
ReDim Preserve bChar(CoutNode - 1)
ReDim Preserve nChar(CoutNode - 1)
tpChar(CoutNode - 1) = tpChar(t) + tpChar(t1)
nChar(t1) = CoutNode - 1
nChar(t) = CoutNode - 1
If tpChar(CoutNode - 1) = ASum Then GoTo 3
Loop
3 MsgBox "Âñå!!!"
End Sub

ФУХХХ!!!
Разобрался как работать с деревьями…
Удачи!
С уважением, Алексадр.

student-uni
Бывалый
Бывалый
 
Сообщения: 242
Зарегистрирован: 01.10.2005 (Сб) 18:54

Сообщение student-uni » 15.05.2006 (Пн) 21:50

Есть ещё помехоусточивое кодирование, но сам не пробовал.

А что в ВС нету чего либо готового ?

Sasha_karasov
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 436
Зарегистрирован: 03.03.2005 (Чт) 19:38
Откуда: ua.dp

Сообщение Sasha_karasov » 21.05.2006 (Вс) 2:07

Есть на VB, да и самому ради интереса хочется это все реализовать!
Удачи!
С уважением, Алексадр.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 55

    TopList