Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2016, 19:52   #1
jaha_050
Новичок
Джуниор
 
Регистрация: 27.12.2016
Сообщений: 2
По умолчанию Шифр Виженера: переписать код так, чтобы программа не только зашифровала, но и расшифровала текст

Текст он зашифрует но не расшифрует. А как сделать чтобы он зашифровал и расшифровал текст???



Код:
#include "stdafx.h"
#include <ctime>
#include <string>
#include <iostream>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
 
{
    string B, C, D = "";
    string A = "abcdefghijklmnopqrstuvwxyz"; //наш алфавит
    setlocale(LC_ALL, "RUS");
    cout « "Введите слово : ";
    cin » B;
    cout « "Введите ключ : ";
    cin » C;
    int* F = new int[B.size()];
    int* G = new int[B.size()];
    int c = C.size(); //делаем замену переменных для удобства
    int b = B.size();
    //Первое условие. Если длина вводимого слова болше, либо равна длине ключа
    if (b >= c)
    {
        for (int i = 0; i < (b / c); i++)
        {
            D = D + C; //Записываем целое количество ключа. Растягиваем ключ по длине слова.
        }
        for (int j = 0; j < (b % c); j++)
        {
            D = D + C[j];
        }
    }
    else
    {
        for (int s = 0; s < b; s++)
        {
            D = D + B[s];
        } //Иначе если ключ длинее слова, ускорачиваем ключ до длины слова.
    }
    cout « D « endl;
    for (int k = 0; k < b; k++)
    {
        for (int n = 0; n < 26; n++)
        {
            if (B[k] == A[n])
            {
                F[k] = n;
            }
            if (D[k] == A[n])
            {
                G[k] = n;
            } //Здесь мы уже начинаем щифровать. Смысл заключается а том, что мы ишем номер буквы во
              //вводимом ключе и номере, а после чего записываем
            //их в массив
        }
    }
    int e = 0;
    for (int u = 0; u < b; u++)
    {
        e = ((F[u] + G[u]) % 26);
        B[u] = A[e];
    }
    cout « "Ваше зашифрованоое слово: " « B « endl;
 
    system("pause");
 
    return 0;
}


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 28.12.2016 в 00:55.
jaha_050 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно сделать так чтобы в Edit1 вводишь Код клиента и после этого в БД остался только этот один клиент Alexander1997 БД в Delphi 9 19.06.2015 04:23
необходимо переписать файл так, чтобы его компоненты располагались в порядке Joistick Паскаль, Turbo Pascal, PascalABC.NET 0 19.06.2013 21:24
Ввод - сделать так, чтобы в Edit можно было вводить только цифры, или на оборот, только буквы BastAngel Общие вопросы Delphi 7 27.04.2012 01:15
переписать строку s так, чтобы символы в ней были записаны в обратном порядке edikesh Помощь студентам 7 05.12.2011 23:16
переписать этот код, так чтобы в коде присутствовали пользовательские модули Artur1992 Помощь студентам 1 05.12.2010 20:17