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

Метод сжатия Хаффмана - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ разбивка функции на параллельные потоки http://www.cyberforum.ru/cpp/thread195190.html
В наличии - последовательная функция нахождения обратной матрицы методом Гаусса-Жордана, написанная в Dev-Cpp. Задача состоит в том чтобы разбить эту функцию на потоки с помощью парадигмы портфеля задач, библиотеки pthreads, семафоров и мютексов. Важна реализация именно в Dev-Cpp. Моего знания для этого, увы, недостаточно. Надеюсь на Вашу помощь. Текст функции: void inversion(double **A, int...
C++ Создание объекта std::set http://www.cplusplus.com/reference/stl/set/set/ Вот официальный сайт, по-моему. И вот там такие конструкторы: explicit set ( const Compare& comp = Compare(), const Allocator& = Allocator() ); template <class InputIterator> set ( InputIterator first, InputIterator last, const Compare& comp = Compare(), const Allocator& = Allocator() ); http://www.cyberforum.ru/cpp/thread194906.html
Курсач "Алгоритм Ершова" C++
Вот, что-то написал такое, естественно позаимствовал куски кода, работает... НО! получается алгоритм раскраски путем перебора вершин! а мне надо алгоритмом Ершова. если надо будет уяснить, что это за алгоритм, то можно написать, а пока вот.. кто знает, подскажите, как его реализовать #include <iostream> #include <conio.h> using namespace std; struct graf{ int stepeni; int color; int...
Строки С++ C++
Приветик ребята! Тут вот такая задача : Дана строка, которая содержит от 1 до 30 слов, у каждом из которых от 1 до 5 латинских букв, между соседними словами - запятая, за последним словом - точка. Оприделить и вывести номер слова из максимальной длиной. Кто знает как решить эту задачу на С++, помогите пожалуйста, а то я сама немного недопонимаю! Зарание спасибо!
C++ invalid floating point operation http://www.cyberforum.ru/cpp/thread194559.html
помогите решить вот такую вот задачу: Коэффициенты системы линейных уравнений заданы в виде квадратной матрицы. С помощью допустимых преобразований привести матрицу к треугольному виду. Найти количество строк, среднее арифметическое которых меньше заданной величины. т.е. надо из матрицы 1 2 3 1 4 10 1 8 32 получить следующую матрицу 1 2 3
C++ надо скачать киньте плиз нормальную ссылку от куда можно скачать С++ подробнее

Показать сообщение отдельно
*В*Е*Л*И*К*А*Н*
Заблокирован
23.11.2010, 22:36  [ТС]     Метод сжатия Хаффмана
это чтоли :
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
#ifdef DEBUG
#define DEBUGGER(Statements) Statements
#define WHERE(Statements) fprintf(stderr,"\n%s|%d\n",__FILE__,__LINE__);\
            Statements
#else
#define DEBUGGER(Statements) /* empty */
#define WHERE(Statements) /* empty */
#endif
 
или это :/* LZWCOM - FILE COMPRESSOR UTILITY                                     */
#include "stdio.h"
#include "debug.h"
#define FALSE    0
#define TRUE     !FALSE
#define TABSIZE  4096
#define NO_PRED  0xFFFF
#define EMPTY   0xFFFF 
#define NOT_FND 0xFFFF 
#define UEOF ((unsigned)EOF)
struct entry {
  char used;
  unsigned int next;      /* hi bit is 'used' flag                        */
  unsigned int predecessor;               /* 12 bit code                  */
  unsigned char follower;
} string_tab[TABSIZE];
 
/*   routines common to compress and decompress, contained in CommLZW.c */
unsigned hash();
unsigned unhash();
unsigned getcode();
putcode();
init_tab();
upd_tab();
 
FILE *op;
main(argc,argv)
int argc; char *argv[];
{
  register unsigned int c, code, localcode;
  int code_count = TABSIZE - 256;
  FILE *infd, *outfd;
  if (3 != argc) {
    fprintf(stderr,"Usage : lzwcom oldfilename squeezefilename\n");
    exit(0);
  }
  if ( -1 == (infd = fopen( *++argv, "r")) ) {
    fprintf(stderr,"Cant open %s\n", *argv);
    exit(0);
  }
  if ( -1 == (outfd = fopen(*++argv,"w")) ) {
    fprintf(stderr,"Cant create %s\n",*argv);
 
    exit(0);
  }
  init_tab();                           /* initialize code table        */
  c = getc(infd);
  code = unhash(NO_PRED,c);             /* initial code for table       */
  DEBUGGER (\
    if (c >= ' ' || c <= '~' || c == '\n' || c == '\r')\
        putchar(c);\
    else\
        printf("[%2x]",c);\
  )
  while ( UEOF != (c = getc(infd)) ) 
  {
      DEBUGGER (\
        if (c >= ' ' || c <= '~' || c == '\n' || c == '\r')\
            putchar(c);\
        else\
            printf("[%2x]",c);\
      )
      if ( NOT_FND != (localcode = unhash(code,c)) ) 
      {
          code = localcode;
          continue;
      }
/* when the above clause comes false, you have found the last known code */
      putcode(outfd,code);      /* only update table if table isn't full */
      DEBUGGER(printf( "\n%x\n",code);)
      if ( code_count ) 
      {
        upd_tab(code,c);
        DEBUGGER(printf("\nadding %x %c = %x\n",code,c,unhash(code,c));)
      --code_count;
      }
/* start loop again with the char that didn't fit into last string      */
      code = unhash(NO_PRED,c);
  }
  putcode(outfd,code);                  /* once EOF reached, always     */
                                        /* one code left unsent         */
  DEBUGGER(fprintf(stderr,"\n%x\n",code);)
  flushout(outfd);                      /* make sure everything's written */
  exit(0);                              /* make sure everything gets closed */
}
?
 
Текущее время: 18:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru