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

Таблица Виженера - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти номер первого вхождения заданного числа в массиве http://www.cyberforum.ru/cpp-beginners/thread1094671.html
1. Вычислить среднее арифметическое квадратов положительных элементов. 2. Определить количество элементов, имеющих четные порядковые номера и являющихся нечетными числами. 3. Найти максимальный элемент и произведение элементов до него. 4. Четные числа заменить на 0, а нечетные на -1, вывести на экран монитора содержимое массива до обработки и после обработки. 5. Найти номер первого вхождения...
C++ Создать класс “Деканат”, состоящей из класса ” Специальность” Создать класс “Деканат”, состоящей из класса ” Специальность”. Класс “Деканат ”:название деканата , фамилия декана, телефон декана . Класс “Специальность”: название специальности, количество групп. Определить для каждого деканата специальность с наибольшим количеством групп. http://www.cyberforum.ru/cpp-beginners/thread1094668.html
boost подключить никак не удалось C++
boost подключить никак не удалось 1>LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc110-mt-gd-1_55.lib' либо делать API функциями, либо dirent.h помогите плиз
Удаление элемента из списка по его номеру C++
Народ, подскажите как связать функцию удаления элемента списка по номеру со структурами которые даны typedef struct { char name; int order; float average_point; } student; typedef struct l_node{ void *data; // Указатель на данные l_node *next; // Указатель на следующий элемент
C++ Программа вычисления обьема цилиндра и конуса на С++ http://www.cyberforum.ru/cpp-beginners/thread1094634.html
Программа вычисления обьема цилиндра и конуса, которые имеют одинаковую высоту H и одинаковый радиус основания R
C++ system("pause") Подскажите пожалуйста, можно ли заменить сообщение "Для продолжения нажмите любую клавишу" при применении команды system("pause")? подробнее

Показать сообщение отдельно
DemonAleks
Сообщений: n/a
12.02.2014, 19:23     Таблица Виженера
Здравствуйте, уважаемые. Я в программировании пока не очень силён, и поэтому не знаю множества нюансов. Пишу прогу, которая должна кодировать/декодировать текст по таблице Виженера. По сути она уже готова, отдельные слова и фразы без пробелов она кодирует без проблем. Но на пробеле почему-то спотыкается, хотя, как мне кажется, не должна... И ещё такой прикол. В конце я сделал 2 вывода полученной строки: посимвольно в основном цикле и после него строкой. Результат до пробела правильный, после пробела в первом случае пробел меняется на * и выводятся неизвестные символы (квадратики), а во втором случае он игнорирует пробел и дописывает необходимое кол-во символов, причём логику их появления я тоже не понимаю.
Буду рад любой помощи =)

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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
#include <string>
#include <locale>
#include <Windows.h>
 
 
using namespace std;
 
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char alpb[33]={'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н',
            'о','п','р', 'с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я'};
    int n,i,j,k,m,numk=-1, kkey, num;
    string key, txt, txtk;
    cout << "Кодировать(1) или декодировать(2)?" << endl;
    cin >> m;
    cin.ignore(256, '\n');
    if(m==1)
    {
        cout << "Введите ключ: ";
        getline(cin, key);
        cout << "Введите текст: ";
        getline(cin, txt);
        k=txt.length();
        kkey=key.length();
        for(i = 0; i < k; i++)
        {
            numk++;
            for(j = 0; j < 33; j++)
            {
                if(txt[i] == alpb[j])
                {
                    num = j;
                    for(j = 0; j < 33; j++)
                    {
                        if(key[numk] == alpb[j])
                        {
                            if((num+j)<=32)
                                txtk+=alpb[num+j];
                            else
                            {
                                txtk+=alpb[(num+j)-33];
                            }
                            break;
                        }
                    }
                    break;
                }
                else
                if (txt[i] == ' ')
                {
                    txtk[i] = '*';
                    break;
                }
            }
            if (numk==(kkey-1))
            {
                numk=-1;
            }
            cout << txtk[i] << " "; /*вывод, вариант первый*/
        }
        cout << endl << txtk << endl; /*вывод, вариант второй*/
    }
    system("pause");
}
Добавлено через 19 часов 44 минуты
Уже разобрался сам.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru