Неудача С Шифром Цезаря(с Ключом). [с++]

Тема в разделе "C/C++/C#", создана пользователем insame, 13 дек 2012.

  1. insame

    insame Гость

    Всем здравствуйте.
    Возникла одна проблемка.
    Изначально по заданию был "Шифр цезаря".
    Программу по шифрованию/дешифрованию написал.

    В итоге преподаватель меня обрадовал, сказав что я сделал не тот вариант.
    Мое новое задание теперь "Шифр цезаря с ключевым словом".
    Подскажите как реализовать "Шифр цезаря с ключевым словом". Заранее спасибо.
    Возможна награда валютой(в рублях).

    Вот теперь сижу ломаю голову. Не получается дописать программу.
    Вот код("Шифр цезаря(без ключевого слова)"):
    Код (C++):
    #include<iostream>
    #include <math.h>
    using namespace std;
    void main()
    {
    char alf [31] = {'*','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','_','+','.','?'};
    char alf2 [31];
    bool check = true;
    int pos,i = 0;
    int a = 0,b = 0;
    int j;
    char *message = new char[];
    char ch;
    cout<<"Alfavit shifra cezarya\n";
    for ( i = 0; i<31; i++)
    cout<<alf[i]<<" ";
    //Vvod
    cout<<"\n\nVvedite soobshenie:"<<endl;
    cin>>message;

    cout<<"Enter a 1<=a<=28: "<<endl;
    cin>>a;



    //for ( i = 0; i<31; i++)
    //  alf2[i]=alf[(a*(i)+b)%31];
    //shefrovanie
    i = 0;
    while(message[i] != '\0')
    {  
    // ishem v alfavite
    for( int k = 0; k < 31; k++)
    if (message[i]==alf[k])
    {
    pos = k;
    break;
    }

    j = (pos + a) % 31;
    message[i] = alf[j];
    i++;

    }

    cout<<"\n\n";
    cout<<"soobshenie shifro: "<<message<<endl;
    cout<<"Enter a 1<=a<=28: "<<endl;
    cin>>a;
    i =0;
    while(message[i] != '\0')
    {  
    for( int k = 0; k < 31; k++)
    {
    if (message[i]==alf[k])
    {
    pos = k;
    break;
    }
    }
    if((pos - a) < 0)
    {
    j = (31 + (pos - a)) % 31;
    }
    else
    j = (pos - a) % 31;

    message[i] = alf[j];
    i++;

    }
    cout<<"deshifracia message: "<<message<<endl;
    system("PAUSE");
    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    ICQ 395-546-218
     
Загрузка...
Похожие Темы - Неудача Шифром Цезаря(с
  1. serko
    Ответов:
    4
    Просмотров:
    1.142

Поделиться этой страницей