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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.68
luchik
Сообщений: n/a
#1

Упаковка строки - C++

21.06.2007, 17:25. Просмотров 3361. Ответов 0
Метки нет (Все метки)

Есть следующее задание:

Первый наиболее часто встречающийся символ кодируется битом 0. Бит 1 кодирует группу из всех остальных символов. Код 10 кодирует второй по частоте символ, 11 - группу всех остальных и т.д.. Разработать функцию упаковки строки

Есть вот такой код:
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
char str[256]; //строка
unsigned char outarray[256]; //выходной массив
unsigned char amounth_elem=0; //количество элементов
char filse_name[256];
FILE *fp;
 
void package()
{
 int frequencies[256]={0}; //частота появления символа
 int i,tmp;
 int j,cnt,flag=0;
 printf("");
 for(i=0;str[i]!=''i++)
 {
  tmp=str[i]; //сохраняем код тек. символа
   if(frequencies[tmp]==0)
    amounth_elem++;
   frequencies[tmp]++; //увеличиваем частоту соответствующего символа
  }
//******************sort*********************
for (i=0;i<256;i++)
     {
     for ( cnt=0,j=0; j<256; j++)
      if(frequencies[j]!=0 && frequencies[i]!=0)
      {    if (frequencies[j] < frequencies[i]) cnt++;
          else
           if (frequencies[j]==frequencies[i] && j<i) cnt++;
         flag=1;
      }
        if(flag==1)
        outarray[cnt]=i;
        flag=0;
     }
//******************end sort*****************
/*for (i=0;i<amounth_elem;i++)
{ printf("");
 printf("%d ",outarray[i]);
 }
 printf("amount simbols: %d ",amounth_elem);
}
*/
}
void write_in_file()
{
 printf("Input files name for save:");
 gets(filse_name);
 fp=fopen(filse_name,"w");
 if(fp==NULL)
  printf("error open file");
 else
 {
  fprintf(fp,"%c",amounth_elem);
 }
  fclose(fp);
}
void read_file()
{
 printf("Input files name:");
 gets(filse_name);
 fp=fopen(filse_name,"r");
 if(fp==NULL)
  printf("can not open file!");
 else
 {
  fscanf(fp,"%c",&amounth_elem);
 }
 printf("%d",amounth_elem);
 fclose(fp);
}
int main()
{
 clrscr();
 printf("Enter string for packing:");
 gets(str);
 str[256]=''
 package();
 write_in_file();
 read_file();
// F2();
 return 0;
}
Т.е. естькод, который определяет к-во вхождений символов в строке и сортирует их по частоте
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2007, 17:25     Упаковка строки
Посмотрите здесь:

Упаковка битовых групп C++
Упаковка текстового файла в exe-файл C++
Упаковка и распаковка даты. C++
Упаковка и распаковка групп чисел и вероятность выпадения граней костей C++
Упаковка массива данных float с заданной точностью C++
C++ Упаковка в байты
C++ упаковка по ящикам
C++ Упаковка бинарного дерева в массив
C++ Упаковка std :: vector <bool> в байты
C++ Упаковка/распаковка стороннего файла в exe
C++ Упаковка пакета с помощью операции сдвига
Упаковка строки с шестнадцатиричными значениями C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 17:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru