4 / 4 / 5
Регистрация: 20.09.2014
Сообщений: 307
1

Объясните пожалуйста как работает эта сортировка

03.05.2017, 18:10. Показов 533. Ответов 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
#include <stdio.h>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath> // для round
#define MAX_CHAR 256
 
using namespace std;
int vsego_simvolov;
// Сохранить входную частоту
char mas_chastot[ MAX_CHAR ];
  /* Храним символ, отсортированный по частоте, частота которого не равна нулю  */
class SimvolCode {
private:
   char simvol;
   int mas_chastot;
   string code;
public:
   SimvolCode( char in_simvol, int in_mas_chastot );
   char getSimvol( void );
   int getMas_chastot( void );
   string getCode( void );
   void addCode( string in_code );
};
 
SimvolCode::SimvolCode( char in_simvol, int in_mas_chastot ) {
   simvol = in_simvol;
   mas_chastot = in_mas_chastot;
   code = "";
}
 
char SimvolCode::getSimvol( void ) {
   return simvol;
}
 
int SimvolCode::getMas_chastot( void ) {
   return mas_chastot;
}
 
string SimvolCode::getCode( void ) {
   return code;
}
 
void SimvolCode::addCode( string in_code ) {
   code += in_code;
}
 
vector<SimvolCode> simvol;
 
 
 
int main () {
   FILE * pFile;
   int c;
   int n = 0;
   pFile = fopen("1.txt","r");
   if (pFile==NULL) {
      perror ("Error opening file");
   } else {
      int i;
      for ( i=0; i<MAX_CHAR; i++ ) {
         mas_chastot[ i ] = 0;
      }
      do {
         c = fgetc (pFile);
         if ( c != EOF ) {
           mas_chastot[ c ] ++;
         // Считываем символы в массив и выводим
          printf( "%c", c );
         }
      } while (c != EOF);
      fclose (pFile);
   }
 
   //информация о частоте
   cout << endl << endl;
   /*
%c  Символ
%d  Десятичное целое число со знаком
   */
   int i;
   for ( i=0; i<MAX_CHAR; i++ ) {
      if ( mas_chastot[ i ] != 0 ) {
 
        printf( "%d, %c: %d\n", i, i, mas_chastot[ i ] );
     }
   }
 
 /* Перемешиваем массив и сортируем */
 
  for ( i=0; i<MAX_CHAR; i++ ) {
      if ( mas_chastot[ i ] != 0 ) {
   if ( simvol.empty() ) {   /* Если контейнер пуст*/
           SimvolCode newSimvol( i, mas_chastot[ i ] );
           simvol.push_back( newSimvol );   /* Добавляем первый элемент в simvol*/
         } else {
 
            vector<SimvolCode>::iterator it;   /* позволяет перемещаться по элементам последовательности*/
            it = simvol.begin(); /*Задаем начало последовательности*/
            for ( int j=0; j<simvol.size(); j++ ) {
               if ( mas_chastot[ i ] >= simvol[ j ].getMas_chastot() ) {
                  SimvolCode newSimvol( i, mas_chastot[ i ] );
                  simvol.insert( it, newSimvol ); /* Добавляем элемент в simvol*/
                  break;
            }
             else if ( j == simvol.size() - 1 ) {
                  SimvolCode newSimvol( i, mas_chastot[ i ] );
                  simvol.push_back( newSimvol );
                  break;
               }
               it ++;
         }
         }
      }
   }
 
   return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2017, 18:10
Ответы с готовыми решениями:

Объясните пожалуйста как тут работает сортировка и что такое ostream_iterator<string>
вот код. Объясните пожалуйста как тут работает сортировка, сам не могу разобраться. Оссобенно это ...

Объясните как работает эта программа
#include &lt;stdio.h&gt; #include &lt;iostream&gt; enum { OUT, IN }; int main () { int c, nw, state;...

Объясните, как работает эта защита от не числового ввода
void check(&amp;x) { while (1) { cin » x; if (cin.get() == '\n') // зачем нужна эта строка? ...

Объясните пожалуйста пошагово что делает эта программа
#include &lt;stdio.h&gt; #include &lt;fstream&gt; #include &lt;iostream&gt; using namespace std; void main() ...

1
Форумчанин
Эксперт CЭксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
03.05.2017, 18:39 2
Его используют.
http://www.cplusplus.com/reference/vector/vector/
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2017, 18:39
Помогаю со студенческими работами здесь

Объясните, пожалуйста, как работает программа
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; using namespace std; #include &lt;conio.h&gt; #include...

Объясните пожалуйста как работает программа
объясните пожалуйста код с момента появления &quot;bool fl&quot;, как это вообще работает? #include...

Объясните пожалуйста как работает программа!!
#include&lt;iostream&gt; #include&lt;cstdlib&gt; using namespace std; int *Create(int n) { ...

Объясните пожалуйста как работает эта программа
Объясните пожалуйста как работает эта программа import java.util.Scanner; public class Main {...

Пожалуйста, объясните как работает эта программа
Найти в упорядоченном массиве заданный элемент методом деления массива пополам (бинарный поиск) ...

пожалуйста, объясните вкратце как работает эта программа
не могу понять как работает программа (уточнение корней методом хорд), помогите пожалуйста unit...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru