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

Вертикальная перестановка - C++

Восстановить пароль Регистрация
 
_alexey
1 / 1 / 0
Регистрация: 02.03.2013
Сообщений: 24
13.11.2013, 21:01     Вертикальная перестановка #1
Добрый день! Написал страшненькую функцию, реализующую алгоритм вертикальной перестановки.
C++ (Qt)
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
//string_chars - одномерный массив символов
//key_chars - одномерный массив, содержит ключ
//key_size - длина ключа
//string_size - длина строки
//SIZE_TWO - количество строк для двумерных массивов, чтоб вместить все символы строки
 
 
    for (int i=0;i<string_size;i++)
    {
        qDebug()<<string_chars[i];
    }
 
 
    int *key = new int[key_size];
    int *index = new int[key_size];
                                                   //Разбираем ключ
    for (int i=0;i<key_size;i++)
    {
        key[i]=(int)key_chars[i]-49;   // Если хочешь от 0, то измени на 48
        qDebug()<<"kChars: "<<key_chars[i];
        qDebug()<<"ki:"<<key[i];
    }
                                                  //Задаем индекс
    for (int i=0;i<key_size;i++)
    {
        for (int r=0;r<key_size;r++)
        {
            if(i==key[r])
            {
                index[i]=r;
                qDebug() <<"index: "<<index[i];
            }
        }
 
    }
    qDebug()<<"index - ok\n";// ЗАКОНЧИЛИ С КЛЮЧОМ И ИНДЕКСОМ
 
 
    QVector< QVector <char> > string_mass(SIZE_TWO);
    QVector< QVector <char> > string_out(SIZE_TWO); //В итоге два массива, размером key_size на SIZE_TWO
 
//Инициализация массивов.
 
    int s=0;
    for (int i=0;i<SIZE_TWO;i++){
        string_mass[i].resize(key_size);
        string_out[i].resize(key_size);
        for (int j=0;j<key_size;j++){
            if (s<string_size){
            string_mass[i][j]=string_chars[s];
            string_out[i][j]='\0';
            } else {
            string_mass[i][j]='\0';
            string_out[i][j]='\0';
            }
 
            s++;
            qDebug()<<string_mass[i][j]<<" out "<<string_out[i][j];
        }
 
    }
 
 
    for (int i=0;i<SIZE_TWO;i++){
        for (int j=0;j<key_size;j++){
            string_out[i][j]=string_mass[i][index[j]];
            qDebug()<<"out "<<string_out[i][j];
        }
 
    }
 
    
    stringOutput.clear();
    for (int r=0;r<key_size;r++)
        {
            for(int i=0;i<SIZE_TWO;i++)
            {
                if (string_out[i][r]!='\0'){
                    stringOutput+=string_out[i][r];
 
                }
                
            }
        }
Сама по себе шифрует, вроде как, правильно. Но теперь нужно написать алгоритм дешифрования, на чем я совсем застрял и просто не понимаю как его сделать. Прошу помощи
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2013, 21:01     Вертикальная перестановка
Посмотрите здесь:

C++ Перестановка
C++ перестановка
Перестановка чисел C++
Вертикальная табуляция C++
Вертикальная гистограмма C++
C++ Использование WS_TABSTOP, вертикальная полоса прокрутки у LISTBOX'а
вертикальная печать дерева C++
C++ Вертикальная табуляция \v

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

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

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