Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Консультация по C++ - платная :) Добавлено: 20.03.09 13:30  

Автор вопроса:  sergey
В рамках учебы есть задача написать программу которая кодирует текст методом Шеннона-Фано... На просторах интернет нашел исходники кода на С++.
Программа работает, но есть одно но ... Изучать С++ только начал в этом семестре. Сам посмотрел на код обработчика кнопки кодирования и не смог разобраться с большей половиной тех команд и инструкций, что там написано.
Можно помочь с коментариями к каждой строке ?
Книг у меня много .. но приходится лопатить их все ради понимания одной строки и еще не факт что разберусь в итоге ...

например со строкой - CShannonFanoEncoding sfe;
так и не разобрался для чего она и что делает ...
Вот код


void CShannonAppDlg::OnButtonEncode()
{
CShannonFanoEncoding sfe;   // Возможно собственный класс стр 582

CString str;
int len, i;
unsigned char *sz; // без знаковое строковое (для улучшения переносимости программы, но ухудшает быстродействие)

if (m_table)
sfe.free_table(m_table, m_tableLen);

m_srcEdit.GetWindowText(str);
len = str.GetLength();
sz = new unsigned char[4096];
wcstombs((char *) sz, str, len + 1);

memset(m_buffer, 0, 4096);

str.Format(L"%d", len << 3);
m_srclenStatic.SetWindowText(str);

// encode
m_len = sfe.encode(sz, len, m_buffer, &m_table, &m_tableLen);

str.Format(L"%d", m_len);
m_outlenStatic.SetWindowText(str);

// output bit result
unsigned char *t = m_buffer;
unsigned char mask = 0x80, s = 7;

str.Empty();
for (i = 1; i <= m_len; i++)
{
str += (WCHAR) (((*t & mask) >> s) + L'0');

mask = mask >> 1;
s--;

if (mask == 0)
{
mask = 0x80;
t++;
s = 7;
}
}
m_outEdit.SetWindowText(str);

WCHAR szTemp[64];
m_codesList.AddString(L"----------");
// output codes
for (i = 0; i < m_tableLen; i++)
{
_itow(m_table[i]->code, szTemp, 2);
str.Format(L"%C - %s [len - %d] [count - %d]", m_table[i]->atom, szTemp, m_table[i]->len, m_table[i]->count);
m_codesList.AddString(str);
}

m_decodeButton.EnableWindow();

delete [] sz;
}



Готов оплатить услуги.. zwezda-11@mail.ru для первого контакта.. в теме желательно указать С++

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 VβÐ



Вопросов: 15
Ответов: 194
 Web-сайт: www.homacosoft.com
 Профиль | | #1
Добавлено: 14.04.09 20:04
Всегда поражаюсь таланту некоторых людей торговаться :)

Ответить

Номер ответа: 2
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #2
Добавлено: 02.05.09 15:37
Особенно когда вопрос по C++ задают на форуме ВБ-шников.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам