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

Шифрирование/дешифрирование сообщения (шыфр Цезаря) - C++

Восстановить пароль Регистрация
 
roman ua
1 / 1 / 0
Регистрация: 06.03.2009
Сообщений: 25
14.02.2011, 01:47     Шифрирование/дешифрирование сообщения (шыфр Цезаря) #1
Само задание: Нужно написать прогу на С(С++) которая реализует шифрирование/дешифрирование исходного сообщения при помощи шифра Цезаря с учетом того, что сообщения, которое необходимо зашифровать, написано на украинском языке. У меня есть рабочий код но мне надо чтоб можна было зашифрировать еще и пробелы а также большые литеры алфавита и сделать чтоб алгоритм был универсальным, тоесть для любого ключа! У меня например ключ 17( тоесть зсув на 17 символов) .
Вот рабочий код:
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
#include <iostream>
#include <stdio.h>
#include <cstdlib>
using namespace std;
int main()
{
    system ("chcp 1251");
    int Value=-1;
    char code[]=  {'а','б','в','г','ґ','д','е','є','ж','з','и','і','ї','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ь','ю','я','\0'};
    char decod[]={'н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ь','ю','я','а','б','в','г','ґ','д','е','є','ж','з','и','і','ї','й','к','л','м','\0'};
    char str[100],fin[100];
    
begin:      
        cout<<"Введіть '1' - кодування з ключем 17 "<<endl<<"Введіть '2' - декодування з ключем 17"<<endl<<"Введіть '0' вихід із програми"<<endl;
        cin>>Value;
        if(Value == 1)
            goto label1;
        if(Value == 2)
            goto label2;
        if(Value == 0)
            goto exit;
label1:
        
            cout<<"Введіть рядок для кодування"<<endl;
            cin>>str;
            int len=strlen(str);
 
            for(int i= 0;i<len;i++)
                for(int j= 0;j<33;j++)
                    if(str[i]==code[j])
                        fin[i]=decod[j];
 
            for(int i= 0;i<len;i++)
                cout<<fin[i];
            cout<<endl;
            goto begin;
        
label2:        
            cout<<"Введіть рядок, який необхідно розкодувати"<<endl;
            cin>>str;
            len=strlen(str);
 
            for(int i= 0;i<len;i++)
                for(int j= 0;j<33;j++)
                    if(str[i]== decod[j])
                        fin[i]=code[j];
 
            for(int i=0 ;i<len;i++)
                cout<<fin[i];
            cout<<endl;
            goto begin;
            
exit:
return 0;        
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2011, 01:47     Шифрирование/дешифрирование сообщения (шыфр Цезаря)
Посмотрите здесь:

Шифр Цезаря C++
C++ Шифр Цезаря
Шифр Цезаря C++
C++ шифрирование.
C++ Шифр Цезаря
Шифр цезаря C++
C++ Шифр Цезаря C++
C++ Шифр Цезаря

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
14.02.2011, 09:33     Шифрирование/дешифрирование сообщения (шыфр Цезаря) #2
С BASIC перешел???
C++
1
2
  if(Value == 1)
                        goto label1;
делай так
C++
1
2
3
4
 if(Value == 1)
                       fnk(1);
   if(Value == 2)
                        fnk(2);
а еше лучше так
C++
1
2
3
4
5
6
7
8
9
  switch(Value)
{
     case 1:
            fnk1();
            break;
     case 2:
            fnk2();
            break;
}
по сушеству вопроса:
Все буквы представляются и компе числами с типом переменной unsigned char размером в 1 байт

поэтому просто прибавь/ вычти свое число
например так
C++
1
2
3
4
5
6
7
8
unsigned char MyCode(unsigned char let,unsigned char key)
   {
      return let+key;
   }
unsigned char MyDeCode(unsigned char let,unsigned char key)
   {
      return let-key;
   }
С уважением Валерий
Yandex
Объявления
14.02.2011, 09:33     Шифрирование/дешифрирование сообщения (шыфр Цезаря)
Ответ Создать тему
Опции темы

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