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

Шифр Атбаш - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Значение функции http://www.cyberforum.ru/cpp-beginners/thread348092.html
Вычеслить значение ф-ции S. Если max та min ф-ции, что вычисляют min та max значение для величин (a, b, c). S= max(в квадрате) (a,b,c)-2(в степени x)*min(a,b,c)/sin2+max(a,b,c)/min(a,b,c).
C++ Вычислить значения выражения... на языке C 1. Вычислить значение выражения при различных вещественных типах данных (float и double). Вычисления следует выполнять с использованием промежуточных переменных. Сравнить и объяснить полученные результаты. 2. Вычислить значения выражений. Объяснить полученные результаты. (a+b)3(kub) - (a3(kub)+3a2(kvadrat)b)/3ab2(kvadrat)+b3(kub) при а=1000, b=0.0001 1. n---m 2. m--<n http://www.cyberforum.ru/cpp-beginners/thread348089.html
C++ как правильно построить массив
Подскажите пожалуйста, как правильно построить массив? Такого рода: vertex **v = new vertex *; vertex *v = new vertex ; Пыталась сделать что-то самостоятельно: vertex** massiv(){ // объявляем динамический массив vertex **v = new vertex *;
Видеоматериалы для Microsoft Visual Studio c++ C++
Год назад мучал в освоение bulder c++ с ним было все просто в плане создания интерфейса программы, поставил кнопку пару раз нажал на нее и написал код для выполнения . Но на Microsoft Visual Studio 10 c++ не могу разобраться как делать интерфейс, поэтому нужны видео уроки на Русском языке. Или на краиняк мануал на русском.
C++ C++ или Java http://www.cyberforum.ru/cpp-beginners/thread348060.html
Извиняюсь что тут пиши просто не знаю где это лучше всего написать. Я начинающий программист хочу научиться программировать только не знаю с какого языка начать программировать javaSE или C/C++? Подскажите какой из востребование проше и т.д. и подскажите литературу по них
C++ Тернарный оператор Доброго времени суток. Есть такой кусок кода, взятый из решения одной задачи: if ( c % 2 == 0 ? p < n : p > n ) { ++a; } else { a = 0; } подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3042 / 1687 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
06.09.2011, 17:28     Шифр Атбаш
Цитата Сообщение от xAtom Посмотреть сообщение
C++
1
// добавить можно кириллицу, да хоть немецкий.
Не получится, так как функции isalpha и другие из файла cctype работают только с символами
английского алфавита. Можно использовать одноименные функции из файла locale, где
вторым параметром задается локаль, но такой код будет непереносимым, так как стандарт
не обязывает компилятор иметь национальные локали.
Вот так можно сделать:
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/////////////////////////////////////////////////////////////////////////////////////////
//                       ШИФР АТБАШ
//Шифр простой замены, использованный для еврейского алфавита и
//получивший оттуда свое название. Шифрование происходит заме-
//ной первой буквы алфавита на последнюю, второй на предпос-
//леднюю (алеф (первая буква) заменяется на тав (последнюю), бет(вторая) заменяется на шин 
//(предпоследняя); из этих сочетани
//шифр и получил свое название). Шифр Атбаш для английского
//алфавита:
//Исходный алфавит: 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
//Алфавит замены:   Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
//Пользуясь изложенным способом:
//А) зашифровать данный текст
//Б) расшифровать данный текст.
/////////////////////////////////////////////////////////////////////////////////////////
// В данной программе можно шифровать атбашем одновременно по нескольким непересекающимся 
//алфавитам. В общем, на курсовую уже не тянет, как минимум на дипломную. 
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <iterator>
#include <set>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string       T_str;
typedef T_str::size_type  T_pos;
typedef std::set<T_str>   T_alphabets;
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_get_atbash_symb
{
    const T_alphabets&  alphabets_;
    //-----------------------------------------------------------------------------------
    T_get_atbash_symb(const T_alphabets&  alphabets) : alphabets_(alphabets)
    {}
    //-----------------------------------------------------------------------------------
    char operator() (char  symb)
    {
        for(T_alphabets::const_iterator  alphabet_it = alphabets_.begin();
            alphabet_it != alphabets_.end(); ++alphabet_it)
        {
            T_pos  symb_pos = alphabet_it->find(symb);
            if(symb_pos != T_str::npos)
            {
                return (*alphabet_it)[alphabet_it->size() - symb_pos - 1];
            }
        }
        return  symb;    
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
T_str  get_atbash_str
    (
        const T_str&        s,
        const T_alphabets&  alphabets
    )
{
    T_str  res_str;
    std::transform
        (
            s.begin(),
            s.end(),
            std::back_inserter(res_str),
            T_get_atbash_symb(alphabets)
        );
    return  res_str;
}
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_gen_rand_simb_from
{    
    T_str  str_for_gen_;
    //-----------------------------------------------------------------------------------
    T_gen_rand_simb_from(const T_alphabets&  alphabets)
    {
        for(T_alphabets::const_iterator  alphabet_it = alphabets.begin();
            alphabet_it != alphabets.end(); ++alphabet_it)
        {
            str_for_gen_ += *alphabet_it;
        }
    }
    //-----------------------------------------------------------------------------------
    char operator() ()
    {
        return  str_for_gen_[rand() % str_for_gen_.size()];
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    srand( unsigned( time(0) ) );
 
    T_alphabets  alphabets;
    alphabets.insert("abcdefghijklmnopqrstuvwxyz");
    alphabets.insert("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
    alphabets.insert("абвгдеёжзийклмнопрстуфхцчшщъыьэюя");
    alphabets.insert("АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ");
    alphabets.insert("0123456789");        
    alphabets.insert("+*#([.,])№/-");    
 
    const int  S_LEN = 50;
    T_str      s;
    std::generate_n
        (
            std::back_inserter(s),
            S_LEN,
            T_gen_rand_simb_from(alphabets)          
        );
 
    std::cout << "Initial line:"
              << std::endl
              << s
              << std::endl;
    
    std::cout << std::endl
              << "The encrypted line:"
              << std::endl
              << get_atbash_str(s, alphabets)
              << std::endl;
 
    std::cout << std::endl
              << "The decrypted encrypted line:"
              << std::endl
              << get_atbash_str
                     (
                         get_atbash_str(s, alphabets), 
                         alphabets
                     )
              << std::endl;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru