Форум программистов, компьютерный форум CyberForum.ru

Метод хаффмана (Помогите адаптировать под задание) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите решить задачи по Абрамяну на for29, for30. http://www.cyberforum.ru/cpp-beginners/thread367917.html
Помогите решить задачи на for по Абрамяну на С++. for29, for30. Я сам чайник. Не шарю вообще. По специальности работать не собираюсь. Так что не надо говорить глупости. Прошу вас просто понять и помочь. Напишите код работающей программы. Надо на завтра Спасибо понимающим.
C++ Вывести длину отрезков (Ребята Помогите пожалуйста.) Помогите решить задачи на for по Абрамяну на С++. for29, for30. Я сам чайник. Не шарю вообще. По специальности работать не собираюсь. Так что не надо говорить глупости. Прошу вас просто понять и помочь. Напишите код работающей программы. Надо на завтра:( Спасибо понимающим. http://www.cyberforum.ru/cpp-beginners/thread367908.html
задание со строками C++
Алфавит некоторого языка программирования включает латинские буквы, цифры, знаки пунктуации (.,;:!?) и языки арифметических операций ( +-*/ ). Программа, написанная на этом языке, содержится в текстовом файле. Проверить допустимость текста программы. Выдать сообщение с указанием места ошибочных символов во 2 файл. помогите написать условие проверки наличия необходимых символов в программе,...
C++ Разреженная матрица
Добрый вечер. Из-за белезни, пролежал 2 недели дома, поэтому пропустил лекции по этой теме, а лабу надо сдавать. Так вот, задача: Разреженная матрица А(nxm) хранится в разреженном строчном формате. Смоделировать операцию вывода разреженной матрицы на экран в двух формах: -в виде полной матрицы; -для каждой строки печатается ее номер, а затем ненулевые элементы этой строки и за каждым...
C++ Передача размерности массива как параметр из одной функции в другую. http://www.cyberforum.ru/cpp-beginners/thread367895.html
Вообщем написал программу. Всё работает как надо, кроме одного, никак не могу сделать чтобы размерность массива, которая вводится в "main" 27-28 строчке (в данном случае переменная "number"), вводилась внутри функции "Vvod" в 49-50 строке(переменная n) и потом передавалась дальше как параметр(размерность массива) всем следующим функциям. #include <windows.h> #include <iostream> using...
C++ Структура функции. Квадратное уравнение. Подскажите пожалуйста как написать функцию решения квадратного уравнение с помощью структуры функции. Я просто понять не могу какие поля требуется задавать в структуру... подробнее

Показать сообщение отдельно
Rivas
0 / 0 / 0
Регистрация: 03.10.2010
Сообщений: 4

Метод хаффмана (Помогите адаптировать под задание) - C++

17.10.2011, 20:04. Просмотров 897. Ответов 3
Метки (Все метки)

Может уже кто-то знаком с этим методом кодирования букв. Помогите адаптировать код представленный ниже к заданию (В задании другой язык, но исходный нужен С++) Скрины с заданием ниже кода.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const ALPHABETSIZE = 256;
 
class TTree
{
  private:
    TTree* fchild0;
    TTree* fchild1;
    bool fleaf;
    int fcharacter;
    int fweight;
  public:
    void Tree(int character, int weight,bool leaf );
    __property TTree* child0={read =fchild0, write= fchild0};
    __property TTree* child1={read=fchild1, write= fchild1};
    __property bool leaf ={ read= fleaf, write= fleaf};
    __property int character={ read= fcharacter, write= fcharacter};
     __property int weight= { read= fweight, write= fweight};
 
  };
  class THuffman
  {
    private:
      int fweights[ALPHABETSIZE];
      String  fcode[ALPHABETSIZE];
      TTree ftree[ALPHABETSIZE];
 
      String GetCodeValue(int Index);
      TTree  GetTreeValue(int Index);
      int GetWeightValue(int Index);
      void SetCodeValue(int Index,const String Value);
      void SetTreeValue(int Index, const TTree Value);
      void SetWeightValue(int Index, const int Value);
    public:
      void makeCode();
      void growTree( int data[]);
      int getLowestTree(int used);
      String coder(int data[]);
      AnsiString decoder(String data);
       __property int weights[int Index] = {read=GetWeightValue, write=SetWeightValue};
       __property String code[int Index] = {read = GetCodeValue, write= SetCodeValue};
       __property TTree tree[int Index] = {read = GetTreeValue, write = SetTreeValue};
      };
  void traverse(String code, THuffman* h);
  THuffman Huffman;
  TTree tr;
  // TTree
 
  void TTree::Tree(int character, int weight,bool leaf)
  {
    fleaf = leaf;
    fcharacter = character;
    fweight = weight;
  }
 
  void traverse(String code, THuffman h)
   {
     if (tr.leaf)
     {
      h.code[tr.character] = code;
      ShowMessage("Simvol: " + (String)tr.character+"  "+"Ves: "+IntToStr(tr.weight) +"  "+"Dvoi4nii kod: "+ code);
     }
    if (tr.child0 != NULL)
     traverse(code + '0', h);
    if (tr.child1 != NULL)
      traverse(code + '1', h);
   }
   // THuffman
 
 
int THuffman::getLowestTree(int used)
{
  int min, i;
  min = 0;
  for (i=1;i<used-1;i++)
  {
   if (tree[i].weight < tree[min].weight)
      min = i;
  }
  return min;
}
 
String THuffman::coder(int data[])
{
  String str;
  int i;
  str = "";
  for (i=0;i<ARRAYSIZE(data);i++)
    str = str + code[data[i]];
  return str;
}
String THuffman::decoder(String data)
{
  String str;
  int c;
  str = "";
  while(data.Length() > 0)
  {
    for( c=0;c<ALPHABETSIZE-1;c++)
     if ((weights[c] > 0) && (code[c] == data.SubString(1,code[c].Length()) ))
        {
        data = data.SubString(code[c].Length(), data.Length());
                str += (char)c;
 
 
        }
  }
   return str;
}
 
/*void THuffman::growTree(int data[])
{
  int i, c, w, min, used, weight0;
  TTree* temp;
  for (i=0;i<ALPHABETSIZE-1;i++)
   weights[i] = 0;
  for (i=0;i<ARRAYSIZE(data);i++)
    weights[data[i]] = weights[data[i]] + 1;
 
  used = 0;
  for (c=0;c<ALPHABETSIZE-1;c++)
   {
    w = weights[c];
    if (w != 0)
     {
      used++;
      tree[used-1] = new TTree;
      tree[used-1].Tree(c, w, true);
     }
   }
  while (used > 1)
  {
    min = getLowestTree(used);
    weight0 = tree[min].weight;
    temp = new TTree;
    temp.child0 = tree[min];
    used--;
    tree[min] = tree[used];
 
    min = getLowestTree(used);
    temp.child1 = tree[min];
    temp.weight = weight0 + tree[min].weight;
    tree[min] = temp;
  }
} */
void THuffman::makeCode()
{
  traverse("", this);
}
String THuffman::GetCodeValue(int Index)
{
  return fcode[Index];
}
TTree THuffman::GetTreeValue(int Index)
{
  return ftree[Index];
}
int THuffman::GetWeightValue(int Index)
{
  return fweights[Index];
}
void THuffman::SetCodeValue(int Index,const String Value)
{
  fcode[Index] = Value;
}
void THuffman::SetTreeValue(int Index, const TTree Value)
{
  ftree[Index] = Value;
}
void THuffman::SetWeightValue(int Index, const int Value)
{
  fweights[Index] = Value;
}
 
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
Метод хаффмана (Помогите адаптировать под задание)
Метод хаффмана (Помогите адаптировать под задание)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru