Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2009, 12:07   #1
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию Можно помочь с анализом чужого кода ? Си

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

например со строкой - 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;
}
Буду признателен за помощь...
sergey113 вне форума Ответить с цитированием
Старый 20.03.2009, 13:19   #2
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию

Не правильная постановка вопроса

Я готов заплатить за помощь в этом вопросе
zwezda-11@mail.ru для первоначальных контактов .. а там есть jabber,ICQ, magent
sergey113 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
закрытие чужого процесса Dimon Win Api 7 12.05.2010 12:01
Как определить путь чужого приложения? VVM Win Api 3 02.12.2008 18:22
Приоритет чужого процесса (консультация) Air Win Api 9 06.03.2008 20:05
Ждать завершения чужого процесса ERASERROR Win Api 2 04.02.2008 08:23
Выдернуть куски кода из html-кода trafbite Помощь студентам 7 18.08.2007 13:51