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

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

Войти
Регистрация
Восстановить пароль
 
D&B
0 / 0 / 0
Регистрация: 07.05.2011
Сообщений: 3
#1

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

10.05.2011, 19:28. Просмотров 350. Ответов 0
Метки нет (Все метки)

Всем доброго дня!
Снова обращаюсь за помощью к умным людям. =)
Имеется следующая программа:

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     Присвоить строке элементы массива
Посмотрите здесь:

Массив: Переменной Х присвоить 1, если элементы массива упорядочены по возрастанию, 0 - в противном случае. - C++
Переменной Х присвоить 1, если элементы массива В(40) образуют возрастающую последовательность и значение 0 в противном случае.

Вывести элементы массива в несколько строк по пять элементов в строке - C++
Описать символьный массив L,размерностью M элементов,заполнять массив с клавиатуры.Вывести элементы массива в несколько строк по пять...

Распечатать элементы массива в обратном порядке по шесть чисел в строке - C++
напишите пожалуйста текст программы. Дано 24 целых числа. Распечатать их в обратном порядке по шесть чисел в строке.

Создать вектор, элементы которого равны произведению max и min в строке массива - C++
С массива ij]mn создать вектор из элементов, что равны произведению max элемента та min элемента в ряде.

Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива - C++
1. Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с...

Ввести массив A(n,m). В каждой строке массива удвоить элементы, расположенные до максимального элемента - C++
Кто способен помочь, напишите, пожалуйста, эту программу.

Создать два новых массива, в один из которых поместить положительные элементы массива, а в другой отрицательные и нулевые элементы - C++
Написать программу , которая вводит с клавиатуры массив из N вещественных чисел , создает два новых массива , в один из которых помещает...

Разделить элементы одного массива на элементы другого массива, записать результат в третий массив - C++
Как разделить элементы одного массива на элементы другого массива? есть массив a и есть массив b. размеры a=b. ввожу новый массив,...

Если минимальный элемент матрицы стоит в первой строке, то элементы, стоящие в строке за ним, заменить нулями - C++
Задана матрица С(5,5). Если минимальный элемент стоит в первой строке, то все элементы стоящие в строке за ним, заменить нулями. Какие...

Записать элементы массива Х в массив У, сместив элементы массива Х вправо на 3 позиции - C++
Записать элементы массива Х в массив У, сместив элементы массива Х вправо на 3 позиции


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

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

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