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

Алгоритм сжатия. BWT преобразование и компрессор - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дан одномерный массив A (n) подсчитать кол-во не совершенных чисел в нём (совершенные = сумме своих делителей http://www.cyberforum.ru/cpp-beginners/thread1044216.html
Дан одномерный массив A (n) подсчитать кол-во не совершенных чисел в нём (совершенные = сумме своих делителей)
C++ Производный класс Доброго времени суток) Помогите реализовать производный класс Vector, который сможет переписать двумерный массив в одномерный и напечатать его. И еще вопрос: как в конструкторе написать значения по умолчанию? http://www.cyberforum.ru/cpp-beginners/thread1044190.html
C++ Найти число с данного промежутка, равное кубу суммы всех своих цифр. Например, 512 = (5 +1 +2) 3
Найти число с данного промежутка, равное кубу суммы всех своих цифр. Например, 512 = (5 +1 +2) 3
Любая ваша программа C++
Добрый вечер, форумчане, нуждаюсь в вашей помощи. Суть в том, что мне нужна абсолютно любая простая(консольная) наглядно работающая и выполняющая свою задачу программа. Будь то что-угодно, сойдёт всё. Основным требованием является лишь наличие в программе шести-десяти функций. Так же было бы хорошо, если бы вы объяснили суть её работы. Компилировать собираюсь в пятом борлэнде. Уверен,...
C++ Определить, сколько раз в заданном предложении встретится одинаковая буква http://www.cyberforum.ru/cpp-beginners/thread1044141.html
Определить, сколько раз в заданном предложении встретится одинаковая первая буква в словах. Напечатать исходный текст и число сочетаний. Нужно срочно , помогите
C++ Решение СЛОУ методом Гаусса с выбором главного элемента по строке Задание:Решение СЛОУ методом Гаусса с выбором главного элемента по строке.Для тестирования решить систему. Запускается,но вывод получается жуткий,даже проверить тяжело,как поправить бы,пожалуйста) Вот,что получилось: #include <iostream> #include <stdio.h> #include <math.h> #include <stdio.h> #include <stdlib.h> using namespace std; подробнее

Показать сообщение отдельно
Виктор242424
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 37
16.12.2013, 19:20     Алгоритм сжатия. BWT преобразование и компрессор
Некорректо работает декодирование,хотя должно быть все нормально,кто заметил ошибку прошу подсказать))
Декодирование с 56 строчки
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <string.h>
#include <conio.h>
 
using namespace std;
 
bool searchKey(string &str,string &str2, int k) {
    for (int i = 0; i < k; i++) {
        if (str[i] != str2[i]) {
            return false;
        }
    }
    return true;
}
 
void code(string &str, int key) {
    int size = str.size();
    string *s = new string[size];
    string answer = "";
    string test = "";
    for (int i = 0; i < size; i++) {
        s[i] = "";
        for (int j = 0; j < size - 1 - i; j++) {
            s[i] += str[i + 1 + j];
        }
        for (int j = 0; j < 1 + i; j++) {
            s[i] += str[j];
        }
    }
    for(int i = 0 ; i < size; i++) { 
       for(int j = 0 ; j < size - i - 1; j++) {  
           if(s[j] > s[j+1]) {           
                string tmp= "";
                tmp += s[j]; 
                s[j] = s[j+1]; 
                s[j+1] = tmp; 
            }
        }
    }
    for (int i = 0; i < size; i++) {
        if (searchKey(s[i], str, size)) {
            key = i;
            break;
        }
    }
    for(int i = 0 ; i < size; i++) {          
        answer += s[i][size-1];
    }
    str = answer;
    cout << "Key:" << key;
}
 
void decode(string &str) {
    int key = 0;
    cout << "\nInput key\n";
    cin >> key;
    string answer = "";
    int size = str.size();
    int *data = new int[size];
    for(int i = 0 ; i < size; i++) {
        data[i] = i;
    }
    string *s = new string[size];
    for (int i = 0; i < size; i++) {
        s[i] = "";
        s[i] += str[i];
    }
    for(int i = 0 ; i < size; i++) { 
       for(int j = 0 ; j < size - i - 1; j++) {  
           if(s[j] > s[j+1]) {           
              string tmp= "";
              tmp += s[j]; 
              s[j] = s[j+1]; 
              s[j+1] = tmp; 
              int w = data[j];
              data[j] = data[j+1];
              data[j+1] =w;
           }
        }
    }
    int *array = new int[size];
    array[0] = data[key];
    for(int i = 1; i < size; i++) {
        array[i] = data[array[i-1]];
    }
    for(int i = 0; i < size; i++) {
        answer += str[array[i]];
    }
    str = answer;
}
 
 
void processFile(string infileName, string outFileName) {
    ifstream ifs(infileName.c_str());
    if (ifs.is_open() == false) {
        return;
    }
    ofstream ofs(outFileName.c_str());
    if (ofs.is_open() == false) {
        ifs.close();
        return;
    }
    string curLine; 
    getline(ifs, curLine);
    cout << "Code or decode?\nIf code, input 1\nIf decode, input 2\n";
    int check;
    cin >> check;
    int key = 0;
    if (check == 1) {
        code(curLine, key);
    }
    else if (check == 2) {
        decode(curLine);
    }
    else {
        return;
    }
    ofs << curLine << "\n"; 
    ifs.close();
    ofs.close();
}
 
int main(int argc, char* argv[]) {
    processFile("C://labin.txt", "C://labout.txt");
    cout << "Press any key to exit";
    _getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru