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

Присвоить строке элементы массива - C++

Восстановить пароль Регистрация
 
D&B
0 / 0 / 0
Регистрация: 07.05.2011
Сообщений: 3
10.05.2011, 19:28     Присвоить строке элементы массива #1
Всем доброго дня!
Снова обращаюсь за помощью к умным людям. =)
Имеется следующая программа:

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
 
#include <stdio.h>
#define MAXSIZE 1000 
#define MAX 1000
#define MAXNODE 1000
#define MAXLEAF 1000
typedef struct {
        int weight;// число повторений в строке
        char letter;//элемент
        int parent,lchild,rchild;
        }HNode;
typedef struct {  
        int start;
        int bit[10];
        }HCode;
//**************************************
void HuffmanTree(HNode HN[MAXNODE],int n)
     {
            int i,j,x1=0,x2=0,min1,min2;
            int num=2*n-1;
            for(i=0;i<num;i++)
               {                          
                    HN[i].weight=0;
                    HN[i].parent=-1;
                    HN[i].lchild=-1;
                    HN[i].rchild=-1;
               }
          
             for(i=0;i<n-1;i++)  
                {
                     min1=MAX,min2=MAX;
                    
                     for(j=0;j<n+i;j++)
                       {         
                            if(HN[j].weight<min1&&HN[j].parent==-1){
                            min1=HN[j].weight;
                            x1=j;
                            }  
                            else if(HN[j].weight<min2&&HN[j].parent==-1){
                                    min2=HN[j].weight;
                                    x2=j;
                                    }
                       }
                      HN[x1].parent=n+i;
                      HN[x2].parent=n+i;      
                
                      HN[n+i].lchild=x1;
                      HN[n+i].rchild=x2;
                      HN[n+i].weight=HN[x1].weight+HN[x2].weight;
              }
    }   
    void Message()
      {
              printf("*****************************************\n"); 
               
              printf("      This is Huffman code program.\n"); 
              printf("     Please input like the eg :a10 .\n");
              printf("*****************************************\n");     
      }             
  //***********************************************
  int main()
  {
          HNode HN[2*MAXNODE-1];
          HCode HC[MAXLEAF],code; 
          char line[MAX],l[MAX],g[MAX], *r;
          int c,i,j,n,p,nc;
          Message();
          
          printf("Enter line: ");
            if (fgets(line, MAX, stdin) == NULL)
            printf("Error!");
            for (r = line,i=0; *r != '\0'; r++,i++)
            {HN[i].letter =*r;
            printf("%c",HN[i].letter);  }
            putchar('\n');
 
            n=i-1;
 
 
            for (i=0;i<=n;i++)
            {
            for (r=line,nc=0;*r!='\0'; r++)
            {
            if (*r ==HN[i].letter)
                nc++;
            }
            HN[i].weight=nc;}
            for(i=0;i<n;i++)
            printf("%d",HN[i].weight);
          
                          
          HuffmanTree(HN,n); 
           for(i=0;i<n;i++)
            {
                  code.start=n-1;
                   c=i;
                   p=HN[c].parent;  
            while(p!=-1)
                      {  
                           if(HN[p].lchild==c)
                              code.bit[code.start]=0;
                            else 
                               code.bit[code.start]=1;
                       code.start--;
                        c=p;
                        p=HN[c].parent;
                    }
                   for(j=code.start+1;j<n;j++)
                     HC[i].bit[j]=code.bit[j];
                     HC[i].start=code.start;
                     
            }
            
            printf("\n");
            
            for(i=0;i<n;i++)
               {
                     
                        for(j=HC[i].start+1;j<n;j++)
                           printf("%d",HC[i].bit[j]);
                      
               }
               
                printf("\n");
               
                for(i=0;i<n;i++)
               {
                       printf("The %c huffman code is :",HN[i].letter);
                        for(j=HC[i].start+1;j<n;j++)
                           printf("%d",HC[i].bit[j]);
                        printf("\n");
               }
               
         return 0;
  }
Вот в этой части программки:

C++
1
2
3
4
5
6
7
 for(i=0;i<n;i++)
               {
                     
                        for(j=HC[i].start+1;j<n;j++)
                           printf("%d",HC[i].bit[j]);
                      
               }
выводится последовательность нулей и единичек, но выводится посимвольно. А мне нужно чтобы эта последовательность сохранялась в строку, чтобы потом я мог дальше работать с этой строкой. Подскажите пожалуйста как это реализовать.

Добавлено через 3 часа 3 минуты
срочно нужно найти решение. ап
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2011, 19:28     Присвоить строке элементы массива
Посмотрите здесь:

C++ Вывести элементы массива на промежутке [ a,b ], вычислить количество элементов массива, заменить все положительные элементы
Массив: Переменной Х присвоить 1, если элементы массива упорядочены по возрастанию, 0 - в противном случае. C++
Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива C++
C++ Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными элем
1. Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными э C++
Создать два новых массива, в один из которых поместить положительные элементы массива, а в другой отрицательные и нулевые элементы C++
C++ Получить третий массив C[15] по правилу: вначале элементы первого массива, затем элементы второго массива
Создать вектор, элементы которого равны произведению max и min в строке массива C++

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

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

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